以太坊GAS详解

为什么需要燃料

众所周知,以太坊由遍布世界各地的节点组成,其上执行的所有操作都会在每个节点执行一次,在网络上执行的每次计算都需要收费,这样可以防止不良行为者给网络带来垃圾信息。 为了防止代码中出现无意或恶意的无限循环或其他计算浪费,要求每笔交易对可以采用的代码执行计算步骤设置一个限制。简而言之,燃料费有助于确保以太坊网络的安全。
在这里插入图片描述

EIP-1559带来的改变

  • 交易费用更容易预测
    交易费由固定部分和浮动部分构成,即由原来的”竞价“模式变为 base_fee + tip 模式
  • 节省用户费用
    在EIP-1559之前,用户支付的费用会做为矿工的奖励,因此矿工更愿意打包付费高的用户,所以用户要想使自己的交易被尽快打包,他们需要支付比其它用户更高的费用来确保交易被优先处理,这种机制不单低效,用户的交易成本也比较高。现在成本更加透明,用户可以预期其交易被打包所需要支付的费用。交易时间也减少了,因为动态调整交易费用可以使网络更有效地用交易填充区块。
  • 缩减了以太坊的总供给量
    新模式下基础费用会被系统回收,从而使以太坊的供给量较之前减少,从而避免大量供给导致的通胀。

基本概念

gas

以太坊对在其上执行的操作会收取一定的费用。不同的操作费用由其复杂程度来决定,而复杂程度由GAS来度量。比如EVM中存储操作相较其它操作有更高的GAS、复杂的逻辑较简章逻辑有更同的GAS、合约间方法调用有更高GAS。
在这里插入图片描述

下表是一些典型交易Gas使用量。

操作类型Gas使用量
以太坊转账21000
发送ERC20(同质化代币)65000
发送NFT(非同质化代币)84904
不同代币间转换184523

gasPrice

根据网络繁忙情况,同样GAS数量的交易需要支付的费用不同,在以太坊该费用的主要由gasPrice来调节。用户需要支付的总费用为 gasPrice * gas amount。gasPrice以下两部分构成:

  1. base fee: 这是一笔交易被提议者打包进区块所需要的最少费用,这个值由网络来决定,之前的区块中所包含交易总数量的多少会影响它的取值(具体规则见下文)。打包完成后这些费用会被系统收回。
  2. tip: 这是一个可选的费用,该费用会被作为提议者的奖励,高的tip会激励提议者优先将交易打包进区块。

用户支付总费用 = gas * ( base_fee + tip )

注:通常在发送交易时开发人员只需要设置maxPriorityFee即可,maxPriorityFee = base_fee + tip

wei是gasPrice的最小单位,以下是不同单位间的换算公式:
gasPrice单位间换算

gasLimit(最高费用)

要在网络上执行交易,用户可以为他们的交易执行而愿意支付的费用指定最高限额。 为了执行交易,最高费用必须超过基础费和小费的总和。 交易完成后,会将最高费用与基础费和小费总和之间的差额退还给交易发送人。

gas费用动态调节

区块大小

以太坊的区块大小是由区块中所有交易的燃气(Gas)消耗总量来确定的。每个交易的Gas消耗是不同的,区块的Gas限制是每个区块中所有交易的Gas总消耗的上限。EIP-1559升级后区块最大为3000W gas,以1500W gas为基准来调节base fee。

调节方法

当区块总Gas大于基准时,base fee会相应增加,此时交易费用的增加会减少用户交易。当小于基准时base fee会相应减少,以激励用户完成交易。这种价格浮动机制可以让用户根据其交易紧迫程度选择恰当的时机进行交易。
base fee浮动

费用计算方法

base fee由一个公式计算得出,该公式将上一个区块的大小(所有交易中使用的燃料数量)与目标大小进行比较。 如果超过目标区块大小,每个区块的基础费将最多增加 12.5%。比如,1. 前一个区块中交易总gas恰好等于基准1500W,那么下个区块将不会调整费用;2. 前一个区块中交易总gas已经达到上限3000W,那么下个区块中base fee调整为 base_fee * ( 1 + 12.5% )。

上个区块gas容量base fee调整
1500W gas保持不变
3000W gas增加12.5%
介于1500W和3000W间增加幅度小于12.5%
小于1500Wgas减少幅度小于12.5%
空块减少12.5%

以下是从以太坊浏览器查看到的相临两个区块base fee动态调整的截图:
在这里插入图片描述

上面的区块总容量小于基准,因此下一个区块的base fee会相应下调

在这里插入图片描述
参考文档:
以太坊白皮书
EIP-1559
https://docs.alchemy.com/docs/eip-1559

  • 11
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值