Cover photo

什么是GAS?

一、GAS的定义

对于初入web3的新手,一定会很多次听到gas这个词。gas常常与我们执行交易时所需花费掉的网络手续费相关,换言之,和新手一般只有几百块的web3钱包余额息息相关。但同时这也是常常令新手感到最抓瞎的地方。

什么是gas呢?这里先给出以太坊官方的定义。

Gas refers to the unit that measures the amount of computational effort required to execute specific operations on the Ethereum network.

https://ethereum.org/en/developers/docs/gas/

这句英文直译过来的意思是,gas指的是一个衡量在以太坊上执行特定操作所需计算量的单位。

好吧,听完更抓瞎了。这里的定义其实更偏向于开发者,而对用户来说其实并不友好。站在我们这些用户层面的角度来说,gas其实更多的是一个衡量在以太坊(或是其他链)上我们完成一笔交易所需交易费的单位。

通俗的讲,gas越高,你交易时要给所使用的区块链网络的手续费用越高;反之,则越低。

二、GAS与交易手续费

先抛结论,后续都是验证与名词解释

交易手续费的多少主要与链上的活跃情况(主要与gas fee中的base fee有关),你自己打算给验证节点多少钱来加速交易(主要与gas fee中的 priority fee有关,不急的话一般使用小狐狸默认),以及所交互的合约有关(链上的具体动作)。

交易费的组成
交易费的组成

接下来就是证明部分,嫌长可略过,直接看后续实操。gas具体和最终的交易手续费有什么关系呢?先抛出它们之间的简单关系式吧。

交易手续费(transcation fee)= 每单位gas价格(gas price)* 所使用的gas数量(gas used)

那每一单位gas价格是多少呢?这里需要厘清一些概念,才能和后续memask实操进行对应。

首先,gas的价格单位通常是Gwei,即10-9 个以太坊。(wei是以太坊最小单位,即10-18个以太坊)。我们需要在交易前为每单位的gas费定价,即一单位gas到底应该值多少个Gwei?

现阶段以太坊gas的费用定价主要分为基础费用(base fee)以及优先费用(priority fee)。即

每单位gas价格 (gas price)= 基础费用价格(base fee)+ 优先费用价格(priority fee)

基础费用主要反映了当前以太坊网络的活跃情况,是由交易时以太坊网络直接计算给出的,用户其实没有实际的定价权。同时这部分以太坊是被直接烧掉的,这也使得以太坊数量现阶段是处于通缩状态的。

优先费用这部分则是给以太坊网络验证者们的费用,用户拥有对这部分费用的定价权。如果想要该笔交易费可以更早完成,那么可以提高这部分的费用,验证者会更快地对具有更高优先费用的交易进行验证。

对于影响交易手续费的另一个乘积因子,所使用的gas的数量。这就主要和你所要求以太坊网络所执行的计算操作的复杂程度有关。简言之,你要求以太坊网络计算的数据越多,记录的数据越多,那么所消耗的gas数量也相应越多。例如,你铸造(mint)一个非同质化代币(nft)所消耗的gas一定会比单纯账户间转账所消耗的gas数量多。

为了再清晰完整的对以上信息进行说明,以下举一个实例进行验证。在etherscan上去查看一笔交易,点击More Details(更多细节)就可以看到更多的关于gas的信息:

post image

这里简单简述一下各项:

  • Value 是指这笔交易的整体价值;

  • Transaction Fee 是指这笔交易所产生的交易手续费;

  • Gas Price 就是上文所提到的每单位gas的价格;

  • Ether Price 则指得是交易发生时以太坊的价格;

  • Gas Limit & Usage by Txn 指得是在交易时所设置的最大gas用量 & 这笔交易实际所用gas的数量;

  • Gas Fees 则是说明Gas单位定价的各部分组成;

  • Burnt & Txn Savings Fees 指得是这笔交易烧掉的基础费用(base fee)& 相对于设置的Max Fee减去实际所用gas fee所返还的费用。具体计算式子为:(max fee - priority fee - base fee) x gas used

Etherscan 交易信息界面
Etherscan 交易信息界面

这里进行一个简单的计算来验证上文交易手续费与gas关系的说法。仍旧是上文的关系式:

交易手续费(transcation fee)= 每单位gas价格(gas price)* 所使用的gas数量(gas used)

这里由Gas Price项可知每单位gas价格(gas price)为16.492 Gwei。由Gas Fees项可知其中组成,base fee 为16.391 Gwei,priority fee为 0.1 Gwei。这也验证了前文所述Gas Price组成的式子。

由Gas Limit & Usage by Txn 可知最终所用掉的gas数量为389035个。那么展开以下计算:

16.492 * 10^(-9) * 389035 = 0.006416

最终的计算结果恰好也就是Trasnction Fee这一项,至此,验证结束。

三、Gas设置与交易时机选择

这里直接上实操,以下是在以太坊上交易时,小狐狸gas相关设置的界面

metamask gas相关设置界面
metamask gas相关设置界面

可以看到小狐狸在进行交易时,对于gas费相关设置主要分为三个部分,分别是最大基本费用,优先费用以及燃料限制。

最大基本费用(maximum base fee),这一项的设置是设定单位gas价格中的基本费用这部分的最大值。这里其实用户方面没有实际的定价权,这部分设置得很高最终也只会按照网络实际的基础费用去进行扣款。但是,需要注意得是如果设置得过低,低于现阶段网络实际的基本费用,那么就会引起这笔交易处于被长时间挂起或者失败。一般来说,使用小狐狸的默认值即可。

优先费用(priority fee),这一项的设置是设定每单位gas价格中的优先费用这部分值。这里用户是有实际的定价权的,这部分设置得越快,一般交易达成的速度也就越快。但也需要注意,不能将其设置得过低,不然也会引起这笔交易处于被长时间挂起或者失败。一般来说,如果不想抢先交易的话,使用小狐狸的默认值即可。

燃料限制(gas limit),这一项的设置是设定所用gas数量的最大值。这一项重要的意义在于防止交互的合约中存在编码错误造成的死循环,从而导致一直消耗gas直到为零。如前文所述,实际所用gas的数量是和你正在进行交互的合约有关的。所交互的合约需要网络完成的计算或者记录的数据越多,消耗的gas也自然越多。也就是说只要你确定要完成此交易,由于合约程序已经确定了,实际调整此项并不会使得消耗的gas数量变多或者变少,而且如果调整得过低,使得合约需要链上计算或者记录数据的动作无法完成,还会导致交易的失败。所以,一般来说,使用小狐狸的默认值即可。

这样说明下来,对于普通用户来说,去自行设置小狐狸的gas费其实意义不大,那么就没有省钱的方法了吗?当然还是有的!

我们可以挑选网络base fee较低时去进行操作来节省交易费用。大家通常说的gas费较低,其实实际上说得就是每单位gas价格中基础费用(base fee)较低的时候。那么问题又来了,我咋知道啥时候gas费较低呢?其实还是有很多追踪方法的。请看下一小节。

四、gas费追踪方法及相关工具

1. 相关网站

  • Etherscan

    首先是大家的老朋友Ethersacn。其实Ethersacn除了看每笔交易的详细信息与代币合约,还有其他很多使用的功能,gas费的追踪就是其中一项。

    首先可以通过小狐狸直接进入Etherscan,或者通过此网址,然后点击右上角more>>Gas Tracker, 就可进入以下界面

Etherscan Gas Tracker
Etherscan Gas Tracker

可以看到在此页面,你可以得到现在gas的相关信息,一般来说看平均项(Average)就可以了。同时还列出了完成典型操作时,需要花费的费用等。

Etherscan Gas Tracker
Etherscan Gas Tracker

此页面的下方还对近期消耗gas最多的合约、钱包地址以及历史gas价格进行了分析。所以当gas很高时,到这个页面来就可以找到到底是谁在作怪了~

  • Ethereum Gas Price Chart

    再推荐一个较为简洁的图表网站。该网站包含了以太坊(Ethereum)与马蹄链(Polygon/Matic)的24小时,7天,30天的历史gas费。

Ehtereum Gas Price Chart
Ehtereum Gas Price Chart

2. 相关插件

如果嫌弃网站有需要点击的麻烦,想要点开浏览器就可以看到gas费数值的话,推荐使用谷歌浏览器插件。这里推荐两个比较好用的谷歌浏览器插件。

 Ethereum Gas Price Extension
Ethereum Gas Price Extension
Blocknative Gas Fee Estimator for ETH & Matic
Blocknative Gas Fee Estimator for ETH & Matic

如果您喜欢这篇文章,还请点击以下订阅按钮,后续还会更新更多优质文章。

Subscribe

您也可以关注我的推特账号,以后也会不定期更新干货