EIP-1559提案后以太坊Gas费计算_BAS:PRI

在以太坊中,交易所需的gas费计算方式是:

TransactionFee=GasPrice×GasLimit

其中GasLimit代表你愿意为这笔交易支付的最大gas量,这通常取决于交易的复杂程度。GasPrice指的是Gas的价格,即你愿意为每个单位的gas所支付的ETH数量。

目前以太坊费用机制使用的是首价拍卖模式。用户需要向以太坊网络提交出价。每当生成一个新的区块时,矿工将把TransactionFee最高的那些交易打包进区块里。每一笔交易都会按照它的出价来支付gas费。

我们通常说的“支付更多的Gas费”意思是增加某笔交易的GasPrice以获得被打包的优先权。例如在Metamask中,有“慢”、“平均”和“快”这3个GasPrice选项供用户选择,用户通过这个选项支付更高的GasPrice来加快自己的交易被打包。

问题在于,用户与钱包都无法准确估计他们应该支付的gas费,事实上用户总在支付高于他们本应支付的价格,来确保交易的顺利进行。我们可以从下图中看出,ETH交易费的平均值一直高于它的中位数,并且当网络拥堵的时候差值尤其的大。

EIP-1559会改变什么?

EIP-1559可以称作是以太坊历史上最令人期待的提案之一。它对以太坊网络的交易费机制进行了很大改造,主要可以概括为:

引入弹性区块大小的机制,每个区块的最大GasLimit被提升至原来的2倍,矿工可以在网络拥堵的时候弹性地改变区块的大小。

原本单一的交易费被更改为固定费用加上小费的模式,固定费用是必须支付的部分,并且会根据上一个区块的Gas使用情况进行动态调整。且每个区块的固定费用部分都会被烧毁,不会给到矿工。

弹性区块大小允许矿工动态扩张或缩小区块大小来处理暂时性的网络拥堵。有了EIP-1559之后,每区块的目标Gas限值还是15M,但是最大Gas限值会从15M调整到30M。如果区块中使用的gas量比目标gas限值少,那么代表网络是不拥堵的,下一个区块的固定费用会降低。如果如果区块中使用的gas量比目标gas限值多,那么代表网络是拥堵的,下一个区块的固定费用会升高。我们会在下文仔细讲解这种机制。总的来说,交易量的波动原先会转化为交易费的波动,而如今转化为区块大小的波动。

区块拥堵程度(来源:IOSGVentures)

EIP-1559引入一种新的交易费用机制,来解决首价拍卖模型中的问题。每区块固定费用是“基础费用”,给矿工的额外的激励是“小费”。所以交易费变为:

TransactionFee=BaseFee+InclusionFee

进一步分解:

TransactionFee=BaseGasPrice×GasLimit+InclusionFee

BaseGasPrice代表每个区块的BaseFee里的Gas的单价,每个区块的BaseGasPrice是固定的,而且价格高低由前一个区块的拥挤程度来决定,

BaseGasPrice=PreviousBaseGasPrice×(1+k×CongestionLevel)

其中CongestionLevel代表区块的拥挤程度,PreviousBaseGasPrice代表上一个区块的BaseGasPrice。k是调整速度系数,0<k<2。而根据EIP-1559的初始设定,k=1/8。拥挤程度会根据每区块中使用的gas量是否大于目标gas限值来决定。

CongestionLevel=(PreviousBlockGas/UsedTargetGasUsed–1)

总结来说,我们可以看到,

0.875×PreviousBaseGasPrice≤BaseGasPrice≤1.125×PreviousBaseGasPrice

假设gas限值相同的情况下,

0.875×PreviousBaseFee≤BaseFee≤1.125×PreviousBaseFee

当网络拥堵时,每过一个区块后BaseFee最多会增加12.5%,BaseFee不断增加直到用户因为交易不再盈利而减少交易,所以这种机制可以缓解拥堵的网络;当网络不拥堵的时候,每过一个区块后BaseFee最多会减少12.5%,BaseFee的下降激励用户增加交易。

小费是用户付给矿工加速交易用的。小费是可选项,可以设置成零。矿工仍然用首价拍卖模式来优先选择有更多小费的交易来打包进下一个区块。

郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。

金宝趣谈

[0:0ms0-4:814ms