ETH与gwei:以太坊Gas费为什么用ETH计价,单位怎么换算
Gas费必须以以太坊的原生货币以太币(ETH)支付,这是协议层面的规定;而日常报价常用gwei,是因为交易在执行任何代码之前,先支付21000 gas的基础固有成本(intrinsic gas),因此每单位gas价格用ETH表示时常出现很多位小数。换算关系很简单:1 ETH = 10⁹ gwei,1 gwei = 10⁹ wei,因此1 ETH = 10¹⁸ wei。wei是ETH的最小单位,名字来自b-money的提出者Wei Dai。
要理解这套单位,先要理解Gas在EVM里怎么被消耗。以太坊开发者文档给出的示例设定Gas limit为50000:交易在执行任何代码之前,先支付21000 gas的基础固有成本;随后程序计数器逐步执行操作码,两个PUSH1把42和0压入栈,MSTORE把42写入内存,再来两个PUSH1,SSTORE把42写入一个新的存储槽,最后STOP结束。每一步都从Gas供应中扣除自身成本,其中单是SSTORE就要22100 gas。栈和内存操作便宜,写存储最贵。这个例子说明:Gas是计算和存储工作的计量单位,本身不是货币。
Gas费之所以用ETH计价,是因为Gas度量的是对EVM资源的消耗,而支付必须落在以太坊原生资产上。文档的表述是:Gas费必须以以太坊原生货币ether(ETH)支付;gas价格通常以gwei报价,gwei是ETH的一种面额。也就是说,ETH是结算资产,gwei只是同一资产在报价时的缩放单位,二者不是两种货币。把0.000000001 ETH说成1 gwei,只是换了一种更易读的写法。
换算时可以抓住三个层级:wei是最小单位;gwei是“giga-wei”,即十亿wei;ETH则是十亿gwei。因此从gwei到ETH要除以10⁹,从gwei到wei要乘以10⁹。举例来说(此处仅为换算示例,不涉及任何实时价格):若某笔交易的gas价格为1 gwei,消耗21000 gas,则费用为21000 gwei,即0.000021 ETH,也就是2.1×10¹³ wei。若报价为20 gwei,同样消耗21000 gas,费用为420000 gwei,即0.00042 ETH。换算只依赖单位定义,与网络拥堵程度无关。
实际提交交易时,你设定的是愿意支付的gas数量,相当于为被打包进下一个区块而出价。总费用由两部分构成:协议设定的base fee,以及给验证者的priority fee(小费)。base fee是交易被视为有效所需的最低支付;priority fee用于提高被选中的可能性。只付base fee的交易在技术上有效,但因缺乏激励而不太可能被纳入。上述内容出自ethereum.org开发者文档的Gas页面,描述的是该文档所对应的以太坊机制;具体参数与界面提示可能随客户端和网络升级而变化,使用时以所用钱包和当前协议规则为准。