01一句话回答
Gas 是你为「让全网帮你执行并记录一笔操作」而支付的费用。它不付给钱包软件,也不付给交易所,而是付给这条链上负责打包交易的那些节点。
可以把链想成一条只有固定车道数的公路:每个区块能装的交易量是有限的,想被装进去就要出价。出价高的先走,出价低的排队,出价太低的可能一直排不上。
02它到底付给谁
付给维护这条链的验证者或矿工。他们用自己的设备执行你的交易、把它写进区块,Gas 是这份工作的报酬。有些链还会把其中一部分直接销毁。
所以两件事就说得通了:
- 为什么钱包不能免掉这笔费用。钱包只是个客户端,它没有权力决定网络收不收费。
- 为什么这笔费用不退。即使你的交易执行失败了(比如合约条件不满足),网络也已经为它花了算力,费用照收。
以太坊现在的机制里,Gas 分成两块:一块是随网络拥堵程度自动调整的基础费用,会被销毁;另一块是你额外给出的优先费,给打包者。这套机制的官方说明可以在 ethereum.org 的 Gas 文档 上看到。
03为什么同样一笔转账,不同时候差很多
因为费用不是固定价目表,而是拍卖。同一时刻想上链的人多,价格就高;人少,价格就低。你的交易复杂度也会影响费用,简单转账比调用合约便宜。
影响最终花多少钱的,主要是这三样:
- 当前网络有多挤。这是波动最大的一项,可能相差好几倍。
- 你这笔操作有多复杂。普通转账是最便宜的;跟合约交互、一次操作多个代币,消耗都更高。
- 你愿意等多久。多数钱包提供快、中、慢几档,慢档便宜但可能等很久。
我们的经验是:非紧急的操作,避开明显的活跃时段,费用体感会低不少。具体数字随时在变,这个站不写死任何一个价格——要看当前水平,去对应链的区块浏览器上查实时数据。
04钱包里有币,却提示余额不足
这是新人头号卡点。原因是 Gas 必须用这条链的原生代币来支付,而你钱包里持有的是别的代币。比如你的地址上只有稳定币,没有那条链的原生代币,那你一分钱也转不出去。
把这个情况说得更具体一点:你从交易所提了一笔稳定币到自己的钱包,钱包里显示得清清楚楚。你想把它转给朋友,钱包却告诉你余额不足。你反复检查,稳定币明明在那儿。
问题在于,链不接受用稳定币来付过路费。它只认自己那条链的原生代币。你的钱包里那一栏是 0,所以哪怕账上有再多稳定币,也发不出一笔交易。
- 从交易所再提一小笔该链的原生代币到同一个地址。金额不用多,够付几次费用即可。
- 或者让熟悉的人往这个地址转一点原生代币。
- 之后养成习惯:每次往一个新链上的地址提资产,顺手留一点原生代币在里面。
留多少原生代币合适
没有一个标准数字,因为各条链的费用水平差得很远,而且每天都在变。可操作的判断方式是按「够用几次」来估:
- 先在钱包里试着发起一笔转账,不要确认,只看它预估的费用是多少。
- 按这个数字的五到十倍准备原生代币。这样即便网络繁忙时费用涨上去,你也还能操作几次。
- 每次往一个新链上的地址提资产时,顺手把原生代币也补上一点。
为什么要留出余量?因为你最需要发交易的时刻,往往正是网络最挤的时刻——比如你想赶紧把资产转走的时候。余额刚好够一次的钱包,等于没有余量。
这个状态下你会很想找「代付 Gas」的服务或者「帮你转出」的人。这正是骗子活动最集中的场景之一:他们会让你把助记词交出来「帮你处理」。任何情况下都不要交出助记词,理由见 助记词与私钥。
05各条链的费用差别有多大
差别可以非常大。同一笔转账在不同链上的成本,可能相差一两个数量级。这也是为什么大家会为了省手续费换链,然后在「对方支不支持这条链」上出事。
不写具体数字,只讲结构性的差别:
- 出块节奏不同。比特币大约十分钟出一个块,以太坊主网大约十二秒一个槽位,波场大约三秒一个块。出块越快、容量越大,通常拥堵带来的价格压力越小。
- 网络设计不同。各种二层网络和高吞吐链,费用通常明显低于以太坊主网。
- 费用的计价单位不同。每条链用自己的原生代币计价,所以换算成法币之后的高低还受该代币价格影响。
选链的时候,费用只是其中一个因素,更要紧的是收款方是否支持那条链。这一点写在 什么是链,选错链会发生什么;从交易所提币时具体怎么选,写在 怎么把币从交易所转到钱包。
06交易卡住了怎么办
如果你给的费用低于当时的市场水平,交易可能长时间处于待处理状态。多数钱包提供「加速」或「取消」功能,本质都是用更高的费用重新发一笔来替换它。
「交易失败了,为什么还扣钱」
这是最容易让人恼火的一种情况,但它的道理和前面是一致的:网络已经执行了你的交易,只是执行结果是失败。算力已经花掉了,费用自然照收。
常见的失败原因有这么几类:
- 滑点设得太紧。链上兑换时价格在你提交后变动超出了你允许的范围,交易被拒绝。
- Gas 上限给得太低。不是单价低,是这笔操作允许消耗的量不够,执行到一半就被中断。
- 合约条件不满足。比如活动已结束、名额已满、你不在允许名单里。
- 前面还有一笔同序号的交易没处理完。
处理方式是先去区块浏览器上看这笔交易的失败原因——多数浏览器会给出一段提示——再决定是调整参数重试,还是干脆放弃。不要凭感觉连点几次重试,那样只会重复付费。
如果它是卡住而不是失败
- 先确认它到底是卡住还是失败。把交易哈希贴到区块浏览器上查一下状态,别只看钱包界面。
- 加速:用相同的交易序号、更高的费用重新广播,网络会采用后者。
- 取消:用相同序号发一笔转给自己的空交易,把原来那笔顶掉。这一步同样要付费用。
- 别重复点发送。连点几次可能造成多笔交易排队,最后全部执行。
这里也有一条经验:卡住的时候先别急着操作,隔一段时间网络空闲下来,原来那笔可能自己就过了。急着加速反而多花钱。