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

2024-02-04 01:59
文章标签 计算 以太 提案 gas eip 1559

本文主要是介绍EIP-1559提案后以太坊Gas费计算,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

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

TransactionFee = GasPrice × GasLimit

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

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

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

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

EIP-1559会改变什么?

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

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

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

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

区块拥堵程度 (来源: IOSG Ventures)

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

TransactionFee = BaseFee + InclusionFee

进一步分解:

TransactionFee = BaseGasPrice ×GasLimit + InclusionFee

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

BaseGasPrice = PreviousBaseGasPrice × (1 + k ×CongestionLevel)

其中 Congestion Level 代表区块的拥挤程度,Previous Base Gas Price 代表上一个区块的 Base Gas Price。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

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

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

 

这篇关于EIP-1559提案后以太坊Gas费计算的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/676070

相关文章

poj 1113 凸包+简单几何计算

题意: 给N个平面上的点,现在要在离点外L米处建城墙,使得城墙把所有点都包含进去且城墙的长度最短。 解析: 韬哥出的某次训练赛上A出的第一道计算几何,算是大水题吧。 用convexhull算法把凸包求出来,然后加加减减就A了。 计算见下图: 好久没玩画图了啊好开心。 代码: #include <iostream>#include <cstdio>#inclu

uva 1342 欧拉定理(计算几何模板)

题意: 给几个点,把这几个点用直线连起来,求这些直线把平面分成了几个。 解析: 欧拉定理: 顶点数 + 面数 - 边数= 2。 代码: #include <iostream>#include <cstdio>#include <cstdlib>#include <algorithm>#include <cstring>#include <cmath>#inc

uva 11178 计算集合模板题

题意: 求三角形行三个角三等分点射线交出的内三角形坐标。 代码: #include <iostream>#include <cstdio>#include <cstdlib>#include <algorithm>#include <cstring>#include <cmath>#include <stack>#include <vector>#include <

XTU 1237 计算几何

题面: Magic Triangle Problem Description: Huangriq is a respectful acmer in ACM team of XTU because he brought the best place in regional contest in history of XTU. Huangriq works in a big compa

音视频入门基础:WAV专题(10)——FFmpeg源码中计算WAV音频文件每个packet的pts、dts的实现

一、引言 从文章《音视频入门基础:WAV专题(6)——通过FFprobe显示WAV音频文件每个数据包的信息》中我们可以知道,通过FFprobe命令可以打印WAV音频文件每个packet(也称为数据包或多媒体包)的信息,这些信息包含该packet的pts、dts: 打印出来的“pts”实际是AVPacket结构体中的成员变量pts,是以AVStream->time_base为单位的显

计算数组的斜率,偏移,R2

模拟Excel中的R2的计算。         public bool fnCheckRear_R2(List<double[]> lRear, int iMinRear, int iMaxRear, ref double dR2)         {             bool bResult = true;             int n = 0;             dou

GPU 计算 CMPS224 2021 学习笔记 02

并行类型 (1)任务并行 (2)数据并行 CPU & GPU CPU和GPU拥有相互独立的内存空间,需要在两者之间相互传输数据。 (1)分配GPU内存 (2)将CPU上的数据复制到GPU上 (3)在GPU上对数据进行计算操作 (4)将计算结果从GPU复制到CPU上 (5)释放GPU内存 CUDA内存管理API (1)分配内存 cudaErro

Java - BigDecimal 计算分位(百分位)

日常开发中,如果使用数据库来直接查询一组数据的分位数,就比较简单,直接使用对应的函数就可以了,例如:         PERCENT_RANK() OVER(PARTITION BY 分组列名 ORDER BY 目标列名) AS 目标列名_分位数         如果是需要在代码逻辑部分进行分位数的计算,就需要我们自己写一个工具类来支持计算了 import static ja

OpenStack离线Train版安装系列—2计算节点-环境准备

本系列文章包含从OpenStack离线源制作到完成OpenStack安装的全部过程。 在本系列教程中使用的OpenStack的安装版本为第20个版本Train(简称T版本),2020年5月13日,OpenStack社区发布了第21个版本Ussuri(简称U版本)。 OpenStack部署系列文章 OpenStack Victoria版 安装部署系列教程 OpenStack Ussuri版

新一代车载(E/E)架构下的中央计算载体---HPC软件架构简介

老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 屏蔽力是信息过载时代一个人的特殊竞争力,任何消耗你的人和事,多看一眼都是你的不对。非必要不费力证明自己,无利益不试图说服别人,是精神上的节能减排。 无人问津也好,技不如人也罢,你都要试着安静下来,去做自己该做的事.而不是让内心的烦躁、焦虑、毁掉你本就不多的热情和定力。 时间不知不觉中,快要来到夏末秋初。一年又过去了一大半,成