ERC-20、SPL 和 Jetton 用三种方式回答同一个问题:记录你余额的那个数字究竟存放在哪里。以太坊把所有持有者的余额都放在同一份共享的代币合约里,Solana 为每个持有者放在一个独立的代币账户里,TON 则为每个持有者放在一份独立的合约里。这一差别解释了授权、手续费和大多数失败模式,也解释了为什么同一个代号在每条链上其实是不同的代币。像 WATS 这样三者通吃的钱包——它覆盖 EVM、Solana 和 TON,但并不原生支持比特币——必须同时讲通这三种语法。
「代币标准」到底是什么
代币标准是一套约定好的接口:函数名、消息格式和事件,钱包与交易所都依赖它们。标准之下不过是普通的代码,而每条链运行这些代码的方式,决定了一个代币能成为什么样子。
ERC-20、SPL 和 Jetton 并不是同一件事的三种方言。它们用三种方式回答同一个问题:那个写着「你拥有 500 枚代币」的数字究竟存放在哪里?以太坊把它放在一个共享合约里,Solana 为每个持有者放在一个独立账户里,TON 则为每个持有者放在一个独立合约里——这些存储模型几乎解释了实践中的所有怪异之处,而它们所依托的架构差异可参见EVM、Solana 与 TON 对比。
以太坊上的 ERC-20:一个合约保管所有人的余额
一个 ERC-20 代币就是位于某个地址上的一份智能合约,它维护着一本把地址映射到数字的账本。你并不「持有」代币;是合约里记着一笔账,说你的地址应得多少。
转账是一次对代币合约的调用,把一行的数字减少、另一行增加。你的地址无需任何准备:即便这个地址从未接触过某个 ERC-20,也能收到它。
这也解释了为什么你可能持有一大笔代币却动不了:调用合约需要 gas,默认以链的原生代币结算。截至 2026 年,这个默认并非绝对——ERC-4337 的 paymaster 允许账户所有者以外的人代付,EIP-7702 则允许第三方提交并支付那笔设置账户委托的 type-4 交易,不过此后能否继续代付,取决于被委托的代码实现了什么。网络仍然会为这些计算收费;改变的只是由谁支付。
Solana 上的 SPL:代币账户、租金与 mint
Solana 把这项工作一分为二。mint 账户定义代币——总量、精度,以及谁有权铸造或冻结。余额则存放在独立的代币账户中。这些账户数据归 Token Program 所有,而账户本身指明某个持有者为其 owner 和消费权限方;并没有规则限制你在一个 mint 下只能有一个账户。
因此钱包统一采用关联代币账户(ATA),它由你的钱包地址、mint 和 token program id 派生而来。这个账户必须存在并有资金:免租金机制会在账户中锁定一小笔可退还的 SOL,以维持它的存续。
所以在 Solana 上收到一种新的 SPL 代币是一次链上事件,尽管大多数转账会把账户创建一并打包进去。截至 2026 年,Token-2022 增加了可选的转账手续费、机密余额和 transfer hook;由于它的 program id 是派生种子之一,它的 mint 派生出的关联代币账户与传统标准并不相同。
TON 上的 Jetton:每个持有者都有自己的合约
TON 把这种拆分推到了极致。一个 jetton 有一份保存元数据和总量的主合约,而每个持有者都会拥有自己的 jetton 钱包合约,其中只存放他在这一种代币上的余额。
转账是异步消息,而不是对共享账本的调用:你的 jetton 钱包合约向接收方的合约发送消息,后者为其余额记账。由于 TON 采用分片,这一过程会在连续的若干个区块中完成,而不是一个原子步骤。
每条消息都必须携带足够的 TON,用于支付它在下游触发的计算,包括在必要时部署接收方的 jetton 钱包;附带得太少,消息可能被退回或卡住。这种设计取向(TEP-74,截至 2026 年)让 TON 得以横向扩展,也让照搬 EVM 思路写出的转账代码频频出错。
授权、手续费与失败模式:三者分歧最大的地方
授权是分歧最尖锐的一处。ERC-20 采用 allowance 模式:你授予某个合约在一定额度内动用你代币的权限,且在撤销之前一直有效——这正是为什么一个不慎的签名可能在几个月后掏空钱包,详见代币授权与 permit 详解以及如何撤销代币授权。
Solana 并不是解药:SPL 的 approve 会在你的代币账户上设置一个 delegate,它在交易结束后依然存在,而 setAuthority 更可以直接把账户的权限转移出去——两者都是已知的盗币手法。Solana 交易会列出它将触及的每一个账户,但这只约束被签名的那笔交易,并不约束长期有效的权限。TON 则没有 ERC-20 式的 allowance。
手续费同样分歧明显:EVM 按计算单元定价 gas,Solana 按每个签名收取固定基础费加可选的优先费,TON 则按消息计费。失败模式也各不相同:在 EVM 上,代币可能被卡在无法处理它们的合约里;在 Solana 上,是缺少代币账户;在 TON 上,是附带的价值太少。
为什么同一个代号在不同链上并不是同一种代币
两种共用一个代号的资产,在技术上毫无关系。USDC 在以太坊上是一个合约地址,在 Solana 上是一个 mint 地址;在 TON 上,像 USDT 这类原生发行的稳定币背后是它自己的 jetton 主合约。每一个都是独立的链上对象,各有各的供应量,而跨链桥版本又是另一种不同的权益凭证。
跨生态发送——把一个 EVM 代币发到 Solana 或 TON 地址——通常无法挽回;把加密资产发错网络后如何找回说明了哪些情况还有救。EVM 到 EVM 往往宽容得多:一个外部拥有账户(包括根据 EIP-7702 完成委托的账户)在每条链上都由同一把私钥控制、地址完全相同,而一个 ERC-4337 式的智能账户即便尚未部署到目标链,通常也能用完全相同的工厂合约和初始化代码在那里重新部署。地址格式是一条线索,详见加密货币地址格式详解;至于移动的是同一份规范化供应量,还是铸造出一份新的权益凭证,则是全链代币与封装/跨链桥代币之间的分野。
这对你的钱包意味着什么(以及 WATS 如何处理)
一个多链钱包必须同时讲通这三种语法,而你本不该察觉到其中的差别——但手续费还是会渗出来,因为每条链都期待自己的原生 gas 代币。截至 2026 年,这个期待是可以协商的,前提是钱包为此而设计。
WATS Hot Wallet 做的正是这件事:每一次操作——转账、兑换、质押——都以单一代币 ATS 计费,而不是用链上的原生 gas,在 EVM 上通过 ERC-4337 paymaster 实现,在 Solana 和 TON 上则通过等效的付费方与中继机制,因为 ERC-4337 仅适用于 EVM。ATS 是一枚 LayerZero OFT,因此一份余额可在 EVM、Solana 和 TON 上通用。这并不改变网络收取的费用——ATS 费用跟随实时的网络成本——它改变的是这笔成本用哪种代币结算。收取的 ATS 会被销毁,从 1 亿枚朝着 3000 万枚的下限递减。它始终是非托管的:私钥由你掌握,WATS 从不持有任何私钥。WATS 是首个也是唯一一个将 ERC-4337 与 OFT 单代币手续费(以其替代原生 gas 收取)和这一销毁机制结合起来的钱包。
常见问题
为什么在 Solana 上接收 SPL 代币要花钱,而在以太坊上却不用?
在以太坊上,你的余额只是代币自身合约里的一行记录,所以接收方无需任何设置,也不用付费。在 Solana 上,你第一次接收某个 mint 时,必须存在一个对应的代币账户,而让这个账户留在链上需要一笔小额的免租金 SOL 押金,账户关闭时可以取回。实际操作中,发送方的交易通常会在同一步里创建并出资建立该账户,因此成本落在发送方身上,接收方根本感觉不到。
TON 的 jetton 转账与 ERC-20 转账有什么不同?
jetton 会给每个持有者一份自己的智能合约,其中只存放他的余额。转账是从你的 jetton 钱包合约发往接收方合约的异步消息,会在连续的若干个区块中完成,而不是在一次原子调用里完成。每条消息都必须携带足够的 TON 来支付它触发的计算,否则可能被退回。
以太坊上的 USDC 和 Solana 上的 USDC 是同一种代币吗?
不是。它们是独立的链上对象,各有各的地址、供应量和标准,尽管共用一个代号和同一个发行方。把其中一个发送到另一条链的地址上,通常无法找回,而某个代号的跨链桥版本与原生发行的版本也是彼此不同的。

