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

相关文章

计算绕原点旋转某角度后的点的坐标

问题: A点(x, y)按顺时针旋转 theta 角度后点的坐标为A1点(x1,y1)  ,求x1 y1坐标用(x,y)和 theta 来表示 方法一: 设 OA 向量和x轴的角度为 alpha , 那么顺时针转过 theta后 ,OA1 向量和x轴的角度为 (alpha - theta) 。 使用圆的参数方程来表示点坐标。A的坐标可以表示为: \[\left\{ {\begin{ar

【云计算 复习】第1节 云计算概述和 GFS + chunk

一、云计算概述 1.云计算的商业模式 (1)软件即服务(SaaS) 有些景区给游客提供烧烤场地,游客需要自己挖坑或者砌烧烤台,然后买肉、串串、烧烤。 (2)平台即服务(PaaS) 有些景区给游客提供烧烤场地,同时搭建好烧烤台,游客只需要自己带食材和调料、串串、烧烤。 (3)基础设施即服务(IaaS) 有些景区给游客提供烧烤场地,同时搭建好烧烤台,还有专门的厨师来烧烤,用户不需要关心前面的所有

什么是dB?dBm、dBc、dBi、dBd怎么计算,有什么区别?

什么是dB?dBm、dBc、dBi、dBd怎么计算,有什么区别? 引言 在电子工程、通信和音频领域,dB(分贝)是一个常见的术语。许多人刚接触时可能会感到困惑,因为它不仅仅是一个简单的单位,还有多种不同的形式,如dBm、dBc、dBi和dBd。这篇文章将详细解释这些概念,并介绍如何计算它们,帮助初学者更好地理解和应用。 什么是dB? dB,即分贝,是一种表示两个数值比值的对数单位。分贝的基

php字符串计算汉字、中英文数字个数

$str = '123abcDEF测试的事发地点';$length = strlen(preg_replace('/[\x00-\x7F]/', '', $str));$arr['en'] = strlen( $str) - $length; //(非中文)$arr['cn'] = intval($length / 3); // 编码GBK,除以2 (中文)print_r($

计算广告:第四章——合约广告

计算广告:第四章——合约广告 一、广告位合约 二、受众定向 1、受众定向方法概览 2、 受众定向标签体系 三、展示量合约 1、流量预测 2、流量塑性 3、在线分配 包括按 CPM 计费的展示量合约广告和按 CPT 结算的广告位合约。   一、广告位合约 按CPT结算广告位合约 缺点:无法做到按受众类型投放广告,无法进行深入的优化效果 优点:强曝光属性带来品牌冲击,或

计算广告:第三章——在线广告产品概览

第三章——在线广告产品概览 一、商业产品的设计原则 二、需求方层级组织及接口 二、供给方管理接口 (1)合约广告产品——主要服务于后续效果不宜直接衡量的品牌类广告主 按时段售卖的CPT广告按约定展示量售卖的CPM广告   (2)竞价广告产品 其形式主要是搜索广告,其产品形式为对搜索关键词的竞价。这种广告拓展到站外广告时,演变为了对页面关键词或者用户标签竞价的产品形式,也就是

计算广告:第二章——计算广告基础

一、广告有效性原理 二、互联网广告的技术特点 1、技术和计算向导 2、效果的可衡量性 3、创意和投放方式的标准化 4、媒体概念的多样化 5、数据驱动的投放决策 三、计算广告的核心问题 1、广告收入的分解 2、结算方式与ECMP估计关系 四、在线广告相关行业协会 五、问题 可衡量的效果以及相应的计算优化是在线广告区别线下广告的主要特点,千次展示期望收入(expect

给定正整数n,计算出n个元素的集合{1,2,....,n}可以划分为多少个不同的非空集合

给定正整数n,计算出n个元素的集合{1,2,....,n}可以划分为多少个不同的非空集合 附源代码: #include<iostream>using namespace std;int F(int n,int m){if(n<=2)return 1;if(m==1||n==m)return 1;elsereturn F(n-1,m-1)+m*F(n-1,m);}void main(

numpy.ndarray数据计算及操作集锦

目录 1. numpy.ndarray各列求均值1.1 列1.2 行 1. numpy.ndarray各列求均值 1.1 列 要对 v_sec_trans 数组的每一列求均值,可以使用 numpy 库中的 mean 函数。以下是具体的代码示例: import numpy as np# 定义 v_sec_trans 数组v_sec_trans = np.array([[ 7.

SQL Plu计算算数表达式及SQL Plus下清屏快捷键

用PL/SQL数据库语言计算sqrt(58+25*3+(19-9)^2)的值 SQL Plus下清屏快捷键是host cls或者 clear screen PL/SQL计算乘方是2个*号: