【web3学堂】第20课——什么是GAS费?
蓝鲸社|幸川

发布于 2023-03-29 20:53

同学们继续上课——

每个区块链基本都会有Gas,以太坊也不例外,所以本次就来讲讲以太坊中的Gas。

以太坊的Gas严格来说分为两种,一种叫GasUnit,另外一种是GasFee。

我们在以太坊上的每笔交易都需要计算资源才能执行,而计算资源的计量单位就是GasUnit。

每笔交易所需的GasUnit如何计算呢?这得看你这笔交易包含了多少指令,因为每个指令所需的GasUnit是固定的,比如ADD指令需要3个GasUnit,MUL指令需要5个GasUnit,把所有指令的GasUnit相加就得到这笔交易的GasUnit。

而GasFee直译就是汽油费,简单理解就是手续费。每次在以太坊上交易时我们都需要支付GasFee。

以太坊GasFee的计算方式在伦敦升级(一次硬分叉)前后有比较大的不同,所以我会分为两个阶段进行讲解。

一、伦敦升级前

在伦敦升级前,GasFee的计算公式为:gas fees = gas spent * gas price
•gas spent:这笔交易所需的GasUnit总和•gas price:你愿意为每单位GasUnit支付的价格,可以自定义(单位是gwei)。

举个例子,假设张三要给李四转1个ETH,这时候他需要花费多少GasFee呢?
在以太坊中,转账所需的GasUnit是最低的,为21000(即gas spent);假设我们设定每单位价格为200gwei,则手续费为:
gas fees =21,000*200= 4,200,000 gwei=0.0042 ETH (1ETH =10^9 gwei) 

二、伦敦升级后

在伦敦升级后,GasFee的计算公式为:gas fees = gas spent *(base fees +priority fees)

gas spent仍和之前一样,不同的是gasprice改成base fees + priority fees。

base fees是每单位GasUnit的最低价格,这些base fees后续会被燃烧,以保证ETH的供应平衡(因为ETH是不限量的,如果不燃烧供应会越来越多,会发生贬值)

priority fees就是小费,跟之前的gas price有点像,费用越高打包也同样越快(也可以自主设置)。

另外,base fees的价格并不是一成不变的,它会随着区块大小而变化,当区块大小大于15M,下一区块的base fees会提高12.5%;反之下降12.5% 小红书

这样设计带来了以下好处:

GasFee的费用更容易预估通过燃烧机制避免了ETH的通货膨胀

到了最后,可能有人奇怪,为什么需要GasFee呢?能不能做成免费的呢?

答案是不行,原因有两点:

1、防止DDOS攻击
如果没有GasFee,即没有手续费,则别有用心的人可能会批量制造一些垃圾交易,而区块的容量是有限的,这就造成正常的交易堵塞,影响用户使用。

2、避免智能合约无限循环
以太坊上面是允许执行智能合约的,智能合约是一种程序,也有while循环(死循环),如果没有GasFee的限制,当出现死循环,则以太坊会永远卡在这,无法执行其他程序。

——下课

编辑于 2023-03-29 21:54
打开APP DoDo提供建站支持