EIP1559介绍

简介

EIP1559由2021年London升级引入。本文介绍EIP1559要解决的问题,解决方案以及BaseFee计算方式,并用etherscan上的数据给出实例解释。

名词概念

EIP1559演化的过程中,重要的三个概念,base fee, max feee和priorityFee有不同的叫法,以下称呼是等同的:

baseFeePerGas == BASE FEE

maxFeePerGas == maxFee == FEE CAP

maxPriorityFeePerGas == priorityFee == tip/miner tip/etc

EIP1559要解决的问题

在London升级之前的传统交易中,用户在发送交易时,需要指定gasLimit和gasPrice两个参数,来付交易费。

gasLimit参数

gasLimit是指用户愿意付的最大Gas,而真实消耗的Gas是在交易执行时计算,叫gasUsed。如果gasUsed超过gasLimit,则扣除所有交易费,执行终止。如果gasUsed小于gasLimit,则扣除gasUsed,剩下的返回给用户。

只要交易被打包,最终的交易费为gasUsed * gasPrice。返回用户的交易费为(gasLimit-gasUsed)*gasPrice。

gasPrice参数

对矿工而言,gasLimit是用户设置的,gasUsed是系统计算的,矿工没有决定权力,但矿工可以根据gasPrice来选择对自己有利的交易。

gasPrice越高,相同gasUsed前提下,意味着gasUsed * gasPrice越高,矿工获利越多。

缺陷

矿工会优先打包高gasPrice交易,对用户而言,打包系统成了一个竞标系统。在网络拥堵时情况越发严重:要想交易被尽快打包,就得给出更高的gasPrice,和其他交易竞争。

此时,用户无法设置对自己最有利的gasPrice,设置高了虽然很快打包,但可能过高造成浪费,过低则可能打包失败。

对于网络而言,gasPrice的无法预测可能导致更严重的拥堵:用户可能为了尽快打包,恶性竞争,或者反复提交交易,导致网络情况更为糟糕。

EIP1559解决方案

要解决以上问题,就得让用户能够预测gasPrice,也就是说,虽然网络拥堵导致gas price升高无法改变,但用户能够提前知道区块的gas price大致范围,进而设置合理的gas Price。甚至用户能够在拥堵时减少交易,缓解网络负担。

EIP1559核心思路,就是根据网络拥堵情况动态的调整gas Price。

1. 把gas price分为baseFee和priorityFee

  • 以前的传统tx中,gasPrice整个是用户设置的。
  • EIP1559中,gasprice = baseFee+priorityFee。其中baseFee是系统根据网络拥堵情况自动计算的的,priorityFee是用户自己设置的。用户最终付的gasPrice包括baseFee和priorityFee,因此用户在提交交易时,就可以预先获取系统的baseFee,进而判断自己的成本至少要大于baseFee,做出合理的交易选择。

2. 引入maxFee

有了baseFee,用户知道了网络拥堵的情况,但如果想在拥堵时打包交易,priorityFee依然需要竞标。

EIP1559引入类似于gasLimit的思路,用户可以设置maxFee,等同于gasPrice的limit。

假如用户设置maxFee为100gwei,baseFee系统计算为60gwei,priorityFee设置为10gwei,那么用户的真实gasPrice为baseFee+prioirityFee=70gwei。最终会返回maxFee-gasPrice=30gwei给用户。

也就是,priority竞标虽然存在,但maxFee可以设置用户消耗gas费的上限,提供止损方案。

3. baseFee销毁

baseFee的收益不会给到矿工,而是系统销毁,从矿工的角度,收入减少了。但好处是ETH 代币的通胀速度将减缓。现在每天 ETH 的产出是 13000 枚左右,年通胀率约为 4%。Dune Analytics 的数据显示,如果按照 EIP 1559 的方式,一年内预计销毁 2937123 枚以太坊,占增发量的 61.9%,可以把通胀率降低到 1.5%。这个数值要比比特币 1.8% 的通胀率更低,在销毁过多的情况下通胀率还可能变为负值。通过销毁基础费,可以将网络的使用价值与 ETH 价值更深地绑定在一起,在一定程度上会提升 ETH 的价值。

baseFee计算方法

基本思路:

  1. 设置blockSize,区块的最大Gas Limit为30M。
  2. 设置gasTarget,理想区块的gasLimit为15M。也就是虽然区块最大的gasLimit为30M,但那只是极端情况,理想区块的gasLimit应该是15M。
  3. 上一个区块的gasUsed和gasTarget比较,如果gasUsed>15M,则baseFee增加,反之则减少。
  4. 在区块达到30M的极端情况,baseFee的变化率为12.5%。比如当前区块为30M,则下一个区块的baseFee增加12.5%,反之则减少12.5%。12.5%是个不小的数字,如果区块大小连续超过目标值近 5 分钟,用户需要支付的基础费就要上涨十倍,近 10 分钟的话上涨 100 倍。

baseFee增加和减少的具体计算方法:

//第一个区块设置初始baseFee
if INITIAL_FORK_BLOCK_NUMBER == block.number:
    expected_base_fee_per_gas = INITIAL_BASE_FEE
//如果parent block的gasUsed等于gasTarget(15M),baseFee不变
elif parent_gas_used == parent_gas_target:
    expected_base_fee_per_gas = parent_base_fee_per_gas
//如果gasUsed大于gasTarget,计算delta。
//计算delta与gasTarget的比例(delta/gasTarget),再乘以12.5%
elif parent_gas_used > parent_gas_target:
    gas_used_delta = parent_gas_used - parent_gas_target
    base_fee_per_gas_delta = max(parent_base_fee_per_gas * gas_used_delta // parent_gas_target // BASE_FEE_MAX_CHANGE_DENOMINATOR, 1)
    expected_base_fee_per_gas = parent_base_fee_per_gas + base_fee_per_gas_delta
else:
    gas_used_delta = parent_gas_target - parent_gas_used
    base_fee_per_gas_delta = parent_base_fee_per_gas * gas_used_delta // parent_gas_target // BASE_FEE_MAX_CHANGE_DENOMINATOR
    expected_base_fee_per_gas = parent_base_fee_per_gas - base_fee_per_gas_delta

思路是计算gasUsed和gasTarget的差值delta,再用delta/gasTarget,计算delta的占比,再乘以12.5,因此不难得知:

  • 当区块到达30M时,delta=gasUse-gasTarget=30M-15M=15M, delta/gasTarget=1, 变化率=12.5%,因此下一个区块的baseFee增加12.5%。
  • 当区块恰好15M时,delta=0M, delta/gasTarget=0,变化率为0,因此下一个区块baseFee保持不变。

实例解释

1. Block相关

一个etherscan上的Block数据:

https://etherscan.io/block/20039078

  • Gas Limit: 30M Gas。又叫做blocksize, 硬上限,blocksize必须小于该数据。Gas Limit由最初的2015年的5000,经过多次EIP升级,目前是London EIP1559升级为30M。
  • Gas Target: Gas Limit的一半,即15M Gas。理想的Gas容量,各个区块会努力向Target靠拢。
  • Gas Used: 本Block实际包含的Gas数量。本例中占比30M的44.42%,比target 15M少11%。
  • Base Fee Per Gas: 又简称为BaseFee,每个区块自动计算,会被燃烧。注意BaseFee单位是wei,代表着gas price,而不是gas。
  • Burnt Fee: 被燃烧掉的gas费。等于Base Fee Per Gas * Gas Used。本例中即0.000000012140394661 * 13324957。

2. 交易相关

该区块对应的一条tx数据:

https://etherscan.io/tx/0x25e9ff6406a6d61df653be7ce38931f9f5b26309c20a003b57815e001254abc8

  • Gas Limit: 本Tx消耗的最高Gas上限,实际消耗的Gas如果超过该上限则交易失败。
  • Used by Txn: 本Tx实际消耗的Gas, 本例中占Gas Limit的83.33%。
  • Gas Fee:
    • Base: 本区块的BaseFee,由系统自动计算,用户无法修改,会被自动燃烧。
    • Max Priority,又叫maxPriorityFeePerGas,GasTipCap,由用户设置,不会被燃烧,是矿工实际能收到的gas price。
    • Max,又叫maxFeePerGas,GasFeeCap,用户设置的最高gas price,实际的gas price(Basefee+GasTipCap)不能高于maxFeePerGas,如果高于,则真实的gas price取值maxFeePerGas。
  • Gas Price: 真实的gas price, 即min(maxFeePerGas, Basefee+GasTipCap),取计算的gas price和maxFeePerGas中最小的值。
  • Burnt: BaseFee * Used by Txn,本例中即12.140394661 * 21,000。
  • Txn Savings Fees: 替用户省下的Gas费。等于用户愿意支付的最大Gas Price(maxFeePerGas), 减去实际支付的Gas Price(maxPriorityFeePerGas + BaseFee),乘以Gas。也就是等同于(maxFeePerGas – Gas Price) * Used by Txn。

Ref



《 “EIP1559介绍” 》 有 4 条评论

  1. Luckily, the Ceylon variety of cinnamon contains a lot much less coumarin Most Blood Sugar Chart will lasix increase blood sugar of the dietary supplements we reviewed contain Ceylon cinnamon because of this Of course, just like any medicine, some dietary supplements may fit wonders for you, type one diabetes high blood sugar while others might not work at all where to buy generic cytotec without insurance

  2. priligy (dapoxetine) I only knew for a few weeks b4 having a miscarriage

  3. priligy tablets price It s OK to eat with your fingers, she said to laughter during the event Tuesday

  4. pqf64cd8e32f5ac7553c150bd05d6f2252bb73f68dpq 的头像
    pqf64cd8e32f5ac7553c150bd05d6f2252bb73f68dpq

    pq118a9989815489c24b81b160782015890ed2085epq

回复 pqf64cd8e32f5ac7553c150bd05d6f2252bb73f68dpq 取消回复

您的邮箱地址不会被公开。 必填项已用 * 标注

About Me

一位程序员,会弹吉他,喜欢读诗。
有一颗感恩的心,一位美丽的妻子,两个可爱的女儿
mail: geraldlee0825@gmail.com
github: https://github.com/lisuxiaoqi
medium: https://medium.com/@geraldlee0825