你在钱包里看到了代币,但转账或 swap 时却失败并提示「insufficient funds for gas」(Gas 余额不足)。这几乎总是意味着一件事:你的代币余额和你的 Gas 余额是两回事,而你恰好用光了这条链的原生 Gas 代币。每条链都用它自己的原生币来收取手续费——以太坊和大多数 L2 上是 ETH,Solana 上是 SOL,TON 上是 Toncoin——而持有 USDC、meme 币、甚至是跨链桥接来的资产,都无法支付这笔交易。修复方法就是在同一条链上拿到少量该链的原生代币(通过 on-ramp、bridge 或 swap),并为下次留一些余量,或者使用一个能帮你处理这些杂事的「单一手续费代币」钱包。
这是自托管(self-custody)中最常见、也最让人困惑的时刻之一。什么都没坏,什么都没丢,你的代币就完好地待在原处。你只是在正确的链上备好正确的 Gas 币之前无法转移它们。本指南会解释这种情况为什么会发生,给你三种快速脱困的方法,并展示一个「单一手续费代币」钱包如何从结构上消除这个问题——同时也会诚实地说明它能改变什么、不能改变什么。
一段话讲清快速修复
如果你只想现在就把卡住的交易解开:先弄清楚你卡住的代币在哪条链上,然后在同一个钱包、同一个网络上拿到少量该链的原生代币。在 EVM 链上(Ethereum、Arbitrum、Optimism、Base、Polygon、BNB Chain)你需要一点 ETH、BNB 或 MATIC;在 Solana 上你需要一点 SOL;在 TON 上你需要一点 Toncoin。最快的几种途径是:内置 on-ramp(用银行卡直接购买原生 Gas)、从一条你已持有原生币的链 bridge 过来(转几美元过去),或者把你已持有的代币中很小一部分 swap 成原生币——前提是你有足够的原生币来支付这一次 swap。一旦原生币余额能覆盖手续费,你卡住的交易就能通过。
为什么会这样:代币余额 vs Gas 余额
区块链会对每一次状态变更收取手续费——转账、swap、授权、铸造。这笔费用叫做 gas,它以网络自身的原生货币支付给网络的验证者。关键在于,这笔费用不会从你正在转移的代币里扣除。如果你转的是 USDC,网络不会从 USDC 里抽成;它会在此之外索要 ETH(或者无论该链的原生币是什么)。
所以你的钱包实际上跟踪着两个恰好共用一块屏幕的独立余额:
- 代币余额——你持有的资产(USDC、meme 币、wrapped 或桥接的代币、NFT)。这些是你想转移的东西。
- Gas 余额——支付网络手续费的原生币。这才是真正让你能转移任何东西的东西。
你可以持有价值 10,000 美元的某种代币,但只要你的原生 Gas 余额为零,你连一分钱都转不出去。这个报错是网络在拒绝开始一笔它知道你付不起的交易。这是余额问题,不是安全问题。
第二个陷阱是 Gas 是按链区分的。Ethereum 主网上的 ETH 无法支付 Polygon 上的交易,SOL 在 EVM 链上也毫无用处。每个网络都是它自己的收费公路,用自己的货币。人们最常在跨链之后撞上这个问题:他们把 USDC 转到一条崭新的链上,带着代币抵达,但在那条链上原生币为零,然后发现自己连把 USDC 转出去都做不到。
第 1 步:确认这条链需要哪种原生代币
在修复任何东西之前,先确认两件事:你卡住的代币究竟在哪条链上,以及那条链用哪种原生代币收取手续费。打开你的钱包,查看代币所在的网络——同一个代币符号(比如 USDC)可以存在于十几条链上,而只有那条特定链上的原生币才管用。
下面是 WATS 支持的各网络的对应关系:
| 链 | 原生 Gas 代币 | 备注 |
|---|---|---|
| Ethereum | ETH | 手续费最高;你需要真正的 ETH,而非 wrapped 或桥接的变体。 |
| Arbitrum / Optimism / Base | ETH | 这些 L2 同样用 ETH 支付 Gas,但必须是该 L2 上的 ETH,而非主网上的。 |
| Polygon | POL(原 MATIC) | 手续费便宜,但仍是它自己的原生币。 |
| BNB Chain | BNB | BNB Chain 上的原生 BNB 支付手续费。 |
| Solana | SOL | 手续费极小,但你仍需一点 SOL 余额才能交易。 |
| TON | Toncoin(TON) | 原生 Toncoin 支付 TON 网络的操作费用。 |
诚实说一句:WATS 在一个自托管钱包里横跨 EVM 链、Solana 和 TON,但它并不原生支持 Bitcoin,所以 Bitcoin 的 Gas 模型不在本文讨论范围内。一旦你弄清了确切的链及其原生币,你就知道要去获取什么了。
第 2 步:快速拿到少量原生 Gas 的几种方法(on-ramp、bridge、swap)
你只需要少量原生代币——够覆盖一次或几次交易即可,不必是一大笔仓位。有三条可靠的途径,大致按速度排序,取决于你手上已有什么。
方案 A——用 on-ramp 购买原生 Gas
当你哪里都没有原生币时,最直接的修复方法是通过 on-ramp 用银行卡或转账直接购买少量原生币,并把它直接发送到你在所需链上的钱包地址。要确保 on-ramp 把原生币交付到正确的网络上——买到落在主网上的 ETH,并不能解决 Base 上一笔卡住的交易。这是唯一一条不需要钱包里预先有任何东西的途径。
方案 B——从另一条链 bridge 一点原生币过来
如果你已经在另一条链上持有原生 Gas——比如你在 Arbitrum 上有 ETH,但你的代币却滞留在 Base 上——你可以 bridge 几美元的原生币过去。bridge 一笔小而有目的的金额;你是在给油箱加油,而不是在搬动你的全部余额。要小心先有鸡还是先有蛋的情况:bridge 本身在源链上也要花 Gas,所以你在那里也需要一点原生币才能启动。
方案 C——swap 你已持有资产中的一小部分
如果你恰好够用原生币覆盖一次交易,你可以把卡住的代币中的一小部分 swap 成更多的原生币,来建立余量。问题和把你带到这里来的那个一模一样:swap 本身就是一笔交易,需要 Gas。如果你的原生币余额真的是零,那么同链 swap 救不了你——你必须先用方案 A 或 B。有些钱包和聚合器提供「swap 时付 Gas」的功能,以不同的方式扣除手续费,这就直接引出了下面的结构性修复方案。
第 3 步:避免下次再遇到——保留少量原生币余量
能完全防止这种情况的最简单习惯:每当你把代币转到一条链上时,顺手带上一点原生币。把它当作在一辆你可能要在陌生城市里开的车里留几美元的油。
- 为你使用的每条链预先充值。在你实际交易的每个网络上保留少量原生币余额(通常只需几美元),这样你永远不会带着无法转移的代币被困住。
- 在 bridge 之前充值,而不是之后。当你把代币发送到一条新链时,在同一次操作中往那里发送或购买一点原生币。
- 留一点余量。不要在一笔交易后把你的原生币耗到最后一分——手续费会波动,下一笔可能比上一笔略贵。
- 留意繁忙的链。尤其在 Ethereum 主网上,拥堵时 Gas 会飙升;昨天还够用的余量,在繁忙的时段可能就不够了。
这管用,但它有一个明显的缺点:你用的链越多,要跟踪和补充的零散原生币余额就越多。这种来回折腾正是下一节要解决的问题。
结构性修复:单一手续费代币钱包(Hot Wallet,诚实说明)
在六条链上各保留一份原生币余量是件繁琐的事。结构性的替代方案是用一个让你在任何地方都能用一种代币支付手续费的钱包,这样你就不必为每条链单独管理一种 Gas 币了。WATS 的 Hot Wallet 通过建立在 gas abstraction(Gas 抽象)之上的单一手续费代币模型来实现这一点:你为一份 ATS 余额充值,这一种代币就能覆盖 Hot Wallet 所支持的各条链上的网络手续费,而不必你在这里弄 ETH、在那里弄 SOL。
现在诚实地说明一下,因为这一点很容易被夸大:
- 它改变的是用哪种代币付,而非付多少。Gas 抽象把手续费代币从各链的原生币换成了 ATS。它不是折扣,不是「免 Gas」,也不是更便宜的 Gas。网络仍按其真实成本收费,并实时跟踪;ATS 只是负责结算它。
- 你仍然需要一份有余额的账户。单一手续费代币是 ATS,所以 ATS 余额为零会让你又回到「insufficient funds for gas」。你只是用一份余额替代了许多份原生币余额——你并没有消除对一份余额的需求。
- 这是 Hot Wallet 的功能,而非通用功能。这一点专门适用于 WATS Hot Wallet。WATS Chrome 扩展程序和移动 App 是纯粹的自托管钱包,遵循前文所述的正常的「按链原生 Gas」模型。
所以真正的好处是狭窄而具体的:一个油箱,而不是六个。如果你的痛点是不断在你恰好落脚的那条链上把油用干,那么把手续费整合进单一一份有余额的代币,就能消除按链来回折腾的麻烦——而手续费如何运作的其他一切都保持不变。
逐链说明(EVM、Solana、TON)
EVM 链(Ethereum、Arbitrum、Optimism、Base、Polygon、BNB Chain)。所有这些都用同一个模型:一种原生币支付 Gas,而且它必须是那条确切链上的那种币。ETH 覆盖 Ethereum 和主要的 L2,但 Arbitrum 上的 ETH 无法支付 Base 的手续费——它们是分开的余额。Polygon 用 POL,BNB Chain 用 BNB。主网手续费波动最大,所以在那里保留最大的相对余量。
Solana。手续费极小,这会让人麻痹大意而忽视它们——但「极小」不等于「零」。你仍然需要一点 SOL 余额才能发送 SPL 代币或与程序交互。某些操作还需要一笔小额 rent 押金来开通代币账户,所以保留的 SOL 要比裸交易费暗示的稍多一点。
TON。网络操作以 Toncoin 支付。与其他链一样,持有一枚 jetton(TON 代币)并不能支付它自己的转账;你需要在同一个钱包里有一点原生 Toncoin。如果你经常在 TON 上交易,请保留少量 Toncoin 余量。
贯穿这三者的脉络是相同的:代币是货物,原生币是燃料,而每条链只接受它自己的燃料。一旦想通这一点,「insufficient funds for gas」就不再是个谜,而变成一次快速、可预测的充值。如果你想了解更深入的机制,请阅读 加密 gas 手续费详解;要理解单一手续费代币钱包如何在不改变成本的情况下转移手续费代币,请看 什么是 gas abstraction。
常见问题
我钱包里明明有代币,为什么却提示 Gas 余额不足?
因为代币余额和 Gas 余额是分开的。网络以它们自己的原生币(ETH、SOL、Toncoin)收取手续费,而非以你正在转移的代币收取。你可以持有价值数千的某种代币,但只要你在那条链上的原生 Gas 余额为零,你仍然无法把它转出去。在同一条链上添加一点原生币即可修复。
我能不能用 USDC 或我的其他代币代替原生币来支付 Gas?
在标准的自托管钱包上不行——每条链都索要它的原生币来付 Gas。像 WATS Hot Wallet 这样使用 gas abstraction 的单一手续费代币钱包,能让你从一份 ATS 余额支付手续费,而不必为每条链单独筹措原生币。它改变的是用哪种代币付,而非成本,并且仍需要一份有余额的 ATS 账户。WATS 扩展程序和移动 App 使用正常的按链原生模型。
我刚把代币 bridge 到一条新链,现在卡住了,该怎么办?
这是该问题最常见的版本:你带着代币抵达,但在新链上原生币为零。在那里拿到少量该链的原生代币——通过 on-ramp 购买,或从一条你已持有一些原生币的链 bridge 几美元过去。下次在 bridge 时,顺手带上一点原生币。
我该为 Gas 保留多少原生代币?
够覆盖几次交易并留有余量即可——通常每条链只需几美元,在 Ethereum 主网上要更多,那里手续费在拥堵时会飙升。不要在一笔交易后把你的原生币耗到最后一分,因为下一笔手续费可能比上一笔略贵。
WATS 支持 Bitcoin 的 Gas 吗?
不支持。WATS 是一个自托管钱包,在一个钱包里横跨 EVM 链(Ethereum、Arbitrum、Optimism、Base、Polygon、BNB Chain)、Solana 和 TON,但它并不原生支持 Bitcoin,所以 Bitcoin 的手续费模型不在讨论范围内。对于它确实支持的链,每条链都如上所述使用它自己的原生 Gas 币。

