为什么转代币比转币更费Gas?按操作读懂用量账单 图 1
为什么转代币比转币更费Gas?按操作读懂用量账单 · 图 1

钱包确认页上那个 Gas 用量数字,新手常当成随机数或平台暗箱:同样是把钱转给别人,转原生币与转代币的预估能差出好几倍;同一笔兑换,不同合约的报价也不同。其实这个数几乎完全可解释——它是虚拟计算机给你这笔操作里每一步动作开出的价签总和。把价签本翻开,用量差异立刻透明。

第一页:只要发交易,先交基础费

以太坊协议为每笔标准交易规定了一笔固定基础开销,简单转账的基准值是 21000 Gas:这笔钱买的是让网络把你的交易放进块、做最低限度处理的权利,与转账金额无关,转一元和转一百万用同一张基础价签。往交易里附加数据、调用合约,基础费之上再叠一层调用开销。基础费解释了为什么小额转账的手续费占比高:固定成本除以小金额,费率自然难看,这与银行电汇的手续费逻辑如出一辙。

第二页:合约执行按指令计费

转账给一个普通地址,网络只需改两个余额;调用一份代币合约,情况变成让虚拟机执行一段代码:校验输入、读取发送方余额、检查额度、写入两个账户的余额变化——每条指令都在价签本上有对应单价,加起来自然高于基础费。这就是转代币更贵的全部秘密:币没变贵,是记账的那段程序被执行了一遍。复杂操作更甚:兑换、添加流动性、链上游戏交互,一次调用内触发多段合约相互转调,用量曲线随调用深度与循环次数爬升,遇到读写全新存储槽时还会撞上整本价签里最贵的那一档。

第三页:数据字节与存储槽

价签本剩余两页管数据。交易附带的每个字节按零值与非零值分别收四 Gas 或十六 Gas;合约存储写入则另按情形定价,把一个空槽首次写成有值收两万上下,改一个已有值便宜些,而这一切都被算进你调用的那笔交易的总用量。判断一个链上动作贵不贵,与其问它转了多少钱,不如数它写了几个存储槽、读了多少个从没碰过的数据——用量的大头几乎总在存储与首次访问上,这也是相同功能的合约有时报价相差数倍的来源:实现方式不同,读写模式就不同。

用量乘以单价,预估为何不等于实扣

手续费等于实际用量乘以每单位 Gas 单价,两个因子一个由操作结构决定、一个由市场拥挤决定,互不相干地各自波动。钱包的预估是模拟执行出来的近似,真实链上状态若与模拟时刻不同——别人的交互先改了你依赖的存储——用量就会偏移;交易执行到一半出错回滚时,此前烧掉的指令并不免费。把预估理解成体检报告而非保证书,就不会在实扣略高时怀疑被多收。

快速问答

问:提高 gas limit 会加快确认吗? 答:limit 只是燃料预算上限,决定排队速度的是优先费出价,两者在费用设置界面常被混淆。

问:比特币转账也讲 Gas 吗? 答:比特币按交易体积计价,不存在执行费,交易大小与费率相乘是另一套账本,但固定与变动成本的结构类似。

问:为什么同一合约有时便宜有时贵? 答:同一动作的用量近似恒定,变化的是单价;感觉忽贵忽便宜的基本都是 Gas 单价随网络拥挤波动。

常见误区

一是把 gas limit 当成手续费报价,二是把代币转账的昂贵归咎于代币本身——它只是执行路径更长;三是拿一次模拟用量给长期操作定价,忽略了状态变化带来的差异。读懂价签本的人,比较的是哪份合约的读写模式更省,而不是哪天的单价更低。

风险提示:本文为费用机制科普,文中 Gas 数值为协议基准示例且会随协议调整,不构成投资建议。