[{"data":1,"prerenderedAt":19},["ShallowReactive",2],{"blog-content-en-erc-20-vs-spl-vs-jetton":3},{"slug":4,"title":5,"excerpt":6,"description":7,"bodyHtml":8,"faqItems":9},"erc-20-vs-spl-vs-jetton","ERC-20 vs SPL vs Jetton: Why the \"Same\" Token Works Differently on Every Chain","ERC-20, SPL and Jetton all describe \"a token\", but they store balances in completely different places. Here is what actually happens under the hood on Ethereum, Solana and TON, and why it changes how transfers succeed or fail.","How ERC-20, SPL and Jetton differ: where token balances live on Ethereum, Solana and TON, and why the same ticker is a different token on each chain.","\u003Cblockquote>ERC-20, SPL and Jetton answer one question three ways: where the number recording your balance is stored. Ethereum keeps every holder's balance in one shared token contract, Solana in a separate token account per holder, and TON in a separate contract per holder. That difference explains approvals, fees and most failure modes, and why the same ticker is a different token on each chain. Wallets covering all three, such as WATS, which covers EVM, Solana and TON but not Bitcoin natively, have to speak all three grammars.\u003C\u002Fblockquote>\u003Ch2>What a \"Token Standard\" Actually Is\u003C\u002Fh2>\u003Cp>A token standard is an agreed interface: function names, message formats and events that wallets and exchanges rely on. Below it is ordinary code, and how each chain runs that code shapes what a token can be.\u003C\u002Fp>\u003Cp>\u003Cstrong>ERC-20, SPL and Jettons are not three dialects of one thing.\u003C\u002Fstrong> They answer one question three ways: \u003Cem>where does the number saying \"you own 500 tokens\" live?\u003C\u002Fem> Ethereum keeps it in one shared contract, Solana in a separate account per holder, TON in a separate contract per holder — storage models that explain nearly every practical quirk, atop the architecture compared in \u003Ca href=\"\u002Fblog\u002Fevm-vs-solana-vs-ton\">EVM, Solana and TON\u003C\u002Fa>.\u003C\u002Fp>\u003Ch2>ERC-20 on Ethereum: One Contract Holds Everyone's Balances\u003C\u002Fh2>\u003Cp>An ERC-20 token is one smart contract at one address, holding a ledger that maps addresses to numbers. You do not \"hold\" the token; the contract holds a note that your address is owed an amount.\u003C\u002Fp>\u003Cp>A transfer is a call \u003Cem>to the token contract\u003C\u002Fem>, decreasing one row and increasing another. Your address needs no preparation: you can receive any ERC-20 at an address that has never touched that token.\u003C\u002Fp>\u003Cp>That explains why you can hold a fortune in a token and still be unable to move it: calling a contract costs gas, settled by default in the chain's native token. As of 2026 that default is not absolute — an ERC-4337 paymaster lets someone other than the account owner pay, and EIP-7702 lets a third party submit and pay for the type-4 transaction that sets an account's delegation, though sponsorship after that depends on what the delegated code implements. The network still charges for the work; only the payer changes.\u003C\u002Fp>\u003Ch2>SPL on Solana: Token Accounts, Rent and the Mint\u003C\u002Fh2>\u003Cp>Solana splits the job in two. A \u003Cstrong>mint account\u003C\u002Fstrong> defines the token — supply, decimals, and which authority may mint or freeze. Balances live in separate \u003Cstrong>token accounts\u003C\u002Fstrong>. The Token Program owns that account data, while the account names a holder as its owner and spending authority; nothing caps you at one account per mint.\u003C\u002Fp>\u003Cp>Wallets therefore standardise on the associated token account, derived from your wallet address, the mint and the token program id. It must exist and be funded: rent-exemption locks a small, refundable amount of SOL in the account to keep it alive.\u003C\u002Fp>\u003Cp>Receiving a new SPL token is therefore an on-chain event, though most transfers bundle account creation in. As of 2026, Token-2022 adds optional transfer fees, confidential balances and transfer hooks; because its program id is a derivation seed, its mints derive a different associated token account than legacy ones.\u003C\u002Fp>\u003Ch2>Jettons on TON: Every Holder Gets Their Own Contract\u003C\u002Fh2>\u003Cp>TON pushes the split furthest. A jetton has a \u003Cstrong>master contract\u003C\u002Fstrong> holding metadata and supply, and every holder gets their own \u003Cstrong>jetton wallet contract\u003C\u002Fstrong> storing only their balance for that one token.\u003C\u002Fp>\u003Cp>Transfers are asynchronous messages, not calls into a shared ledger: your jetton wallet contract messages the recipient's, which credits the balance. Because TON is sharded, that resolves over consecutive blocks rather than one atomic step.\u003C\u002Fp>\u003Cp>Each message must carry enough TON for the computation it triggers downstream, including deploying the recipient's jetton wallet if needed; attach too little and it can bounce or stall. That orientation (TEP-74, as of 2026) lets TON scale horizontally, and trips up naive transfer code written for EVM.\u003C\u002Fp>\u003Ch2>Approvals, Fees and Failure Modes: Where the Three Diverge\u003C\u002Fh2>\u003Cp>Approvals are the sharpest divergence. ERC-20 has the allowance pattern: you grant a contract permission to move up to some amount of your tokens, and it persists until revoked, which is why one careless signature can drain a wallet months later — see \u003Ca href=\"\u002Fblog\u002Ftoken-approvals-and-permit-explained\">token approvals and permit explained\u003C\u002Fa> and \u003Ca href=\"\u002Fblog\u002Fhow-to-revoke-token-approvals\">how to revoke token approvals\u003C\u002Fa>.\u003C\u002Fp>\u003Cp>Solana is not the antidote: an SPL approve sets a delegate on your token account that survives the transaction, and setAuthority can reassign the account outright — both known drainer vectors. A Solana transaction lists every account it will touch, but that constrains only the transaction signed, not standing permissions. TON has no ERC-20-style allowance.\u003C\u002Fp>\u003Cp>Fees diverge too: EVM prices gas per unit of computation, Solana a flat base fee per signature plus an optional priority fee, TON per message. So do failure modes: on EVM, tokens stranded in a contract that cannot handle them; on Solana, a missing token account; on TON, too little value attached.\u003C\u002Fp>\u003Ch2>Why the Same Ticker Is Not the Same Token Across Chains\u003C\u002Fh2>\u003Cp>Two assets sharing a ticker share nothing technically. USDC on Ethereum is a contract address, on Solana a mint address; on TON a natively issued stablecoin such as USDT sits behind its own jetton master. Each is a separate on-chain object with its own supply, and a bridged version is a different claim again.\u003C\u002Fp>\u003Cp>Sending across ecosystems — an EVM token to a Solana or TON address — is usually unrecoverable; \u003Ca href=\"\u002Fblog\u002Fsent-crypto-to-wrong-network-how-to-recover\">sent crypto to the wrong network, how to recover\u003C\u002Fa> sets out what can be salvaged. EVM to EVM is often forgiving: an externally owned account, including one delegated under EIP-7702, is controlled by the same key at the identical address on every chain, and an ERC-4337-style smart account undeployed on the destination chain can normally be redeployed there with the identical factory and init code. Address formats are a clue, covered in \u003Ca href=\"\u002Fblog\u002Fcrypto-address-formats-explained\">crypto address formats explained\u003C\u002Fa>; whether one canonical supply moves or a new claim is minted is the difference between \u003Ca href=\"\u002Fblog\u002Fomnichain-vs-wrapped-bridged-tokens\">omnichain tokens and wrapped or bridged ones\u003C\u002Fa>.\u003C\u002Fp>\u003Ch2>What This Means for Your Wallet (and How WATS Handles It)\u003C\u002Fh2>\u003Cp>A multi-chain wallet has to speak all three grammars, and you should never see the difference — but fees leak through, because each chain expects its own native gas token. As of 2026 that expectation is negotiable, if the wallet is built for it.\u003C\u002Fp>\u003Cp>The WATS Hot Wallet does exactly that: every action — transfers, swaps, staking — is charged in one token, ATS, instead of the chain's native gas, through an ERC-4337 paymaster on EVM and an equivalent fee-payer and relayer on Solana and TON, since ERC-4337 is EVM-only. ATS is a LayerZero OFT, so one balance works across EVM, Solana and TON. This does not change what the network charges — the \u003Ca href=\"\u002Fats-fee\">ATS fee\u003C\u002Fa> tracks live network cost — it changes which token that cost is settled in. Collected ATS is burned, from 100 million toward a 30 million floor. It stays non-custodial: you hold your keys and WATS never holds a key. WATS is the first and only wallet to combine ERC-4337 and OFT single-token fees, charged instead of native gas, with that burn.\u003C\u002Fp>",[10,13,16],{"q":11,"a":12},"Why does receiving an SPL token cost something on Solana but not on Ethereum?","On Ethereum, your balance is just a row inside the token's own contract, so receiving is free for the recipient and needs no setup. On Solana, the first time you receive a given mint, a token account has to exist for it, and keeping that account on-chain requires a small rent-exemption deposit in SOL that is recoverable when the account is closed. In practice the sender's transaction usually creates and funds that account in the same step, so the cost falls on the sender and the recipient never sees it.",{"q":14,"a":15},"What makes a TON jetton transfer different from an ERC-20 transfer?","A jetton gives every holder their own smart contract that stores only their balance. A transfer is an asynchronous message from your jetton wallet contract to the recipient's, resolving over consecutive blocks rather than in one atomic call. Each message must carry enough TON to pay for the work it triggers, or it can bounce.",{"q":17,"a":18},"Is USDC on Ethereum the same token as USDC on Solana?","No. They are separate on-chain objects with separate addresses, supplies and standards, even though they share a ticker and an issuer. Sending one to an address on the other chain is normally unrecoverable, and bridged versions of a ticker are distinct from natively issued ones.",1786059318580]