
币与代币:为什么发送 USDC 需要 ETH
这是加密世界里最常见的意外之一。你在 Ethereum 上持有价值 500 美元的 USDC,准备发送出去,钱包却提示余额不足。不足的到底是什么?答案在于币与代币之间的区别——一旦想通了这一点,钱包的很多行为都会豁然开朗。
币是链本身的货币
每条区块链都有一种写入其规则的原生资产。Bitcoin 有 BTC,Ethereum 有 ETH,Solana 有 SOL,Polygon 有 POL。这些就是币:由网络本身记账,也是网络接受的、用于支付交易处理费用的资产。
当你发送币时,链会直接转移它。中间没有任何合约,只有协议自身的账目。
代币存在于合约之中
代币则不同。在 Ethereum 及类似的链上,USDC、USDT 或治理代币这样的代币,是一个维护自己账本的智能合约:账本记录着各个地址以及每个地址持有多少该代币。在 Solana 上,代币遵循 SPL 标准,余额保存在独立的代币账户中。
你的“USDC 余额”实际上是 USDC 合约中的一条记录,写明某个数额属于你的地址。发送 USDC,就是请求该合约更新账本——把一个数字从你的记录挪到别人的记录里。
正因如此,同一种代币可以在多条链上以完全独立的形式存在。Ethereum 上的 USDC 和 Polygon 上的 USDC 是不同的合约,拥有不同的账本。有些版本是原生发行的;另一些则是存放在别处的资产的包装或跨链桥映射版本。
燃料费始终用币支付
令人意外的部分就在这里。请求代币合约转移你的余额,依然是链上的一笔交易,而链对每笔交易都会收取费用——即燃料费(gas)。这笔费用用原生币支付,而不是用你正在发送的代币支付。
因此,要在 Ethereum 上发送 USDC,同一个地址里需要有两样东西:
- 你想发送的 USDC,以及
- 少量用于支付交易费用的 ETH。
没有 ETH,USDC 就会被卡住——并没有丢失,只是在你补充 ETH 之前无法转移。这条规则处处适用:Polygon 上的代币需要 POL 支付燃料费,BNB Chain 上需要 BNB,Avalanche 上需要 AVAX,Base 上需要 ETH。
Solana 的额外细节
Solana 本质上也一样——手续费用 SOL 支付——只是多了一点。你持有的每种代币都需要各自的代币账户,而创建代币账户需要一笔少量的 SOL 押金,称为租金。当有人向你发送一种你从未持有过的代币时,就必须为它创建一个代币账户。代币账户与租金如何运作一文详细解释了其中细节;简单来说,要持有和转移 SPL 代币,你同样需要备一点 SOL。
由此可以解释的错误
一旦弄清币与代币的区别,几个经典问题就说得通了:
- 代币余额充足却提示“余额不足”。 你用来支付燃料费的原生币已经用完了。
- 代币发到了错误的网络。 在一条链上发送的 USDC 不会出现在另一条链上,即使地址相同,因为那是另一个账本上的另一个合约。
- 把最后的币全部发出。 把 ETH 完全清空后,该地址上的所有代币都无法转移,直到你再充值为止。
- 无法卖出的“免费”代币。 一个不请自来的代币可能需要燃料费才能转移——而且它可能被刻意设计成让你尝试转移的成本高于它本身的价值。
在 SSP 中如何运作
SSP 按链展示币和代币,分别位于各条链的钱包内。在 EVM 链上,你的 SSP 账户是由你的 2-of-2 多签控制的智能账户,代币转账的燃料费从同一个金库的原生币中支付,所以请在代币旁边留少量 ETH(或 POL、BNB、AVAX)。当你发送代币时,SSP Key 会显示它从交易中解码出的代币转账——即代币的收款方和数额,而不只是一串原始的合约调用。
在 Solana 上,SSP 的中继会预先支付网络手续费,金库则在同一笔发送中用 SOL 偿还这笔费用,所以金库里仍然需要有一些 SOL。
坦诚的总结
币是链本身的货币;代币是运行在链上的合约中的余额。每笔交易都用币支付费用——包括转移代币的交易。
在你持有代币的每条链上都留一点原生币作为缓冲,在发送或接收代币前确认它位于哪个网络,你就能避开加密世界里最常见的“我的钱去哪了?”时刻。


