当前位置:首页区块链深入理解以太坊气体机制:从概念起源和21个eip开始

深入理解以太坊气体机制:从概念起源和21个eip开始

天然气成本是以太坊1.0链面临的最严重问题之一。尽管以太坊拥有强大的算力,但其任务容量取决于区块链的结构(每个节点计算相同的数据,因此任务是在争夺单个节点的计算资源)。以太坊在处理大量的任务时会很拥挤。堵车后,汽油成本会很高。

DeFi应用的爆炸性增长加剧了这一现象。这里需要提到的是,除了打包区块链交易外,以太坊还在链上发布智能合约,因此智能合约在链上执行时会消耗资源。因此,用户在DeFi中几乎每做一步都需要支付GAS FEE,这也是燃气模式的一个问题。

最近,以太坊社区对EIP-1559的讨论更为激烈,因为许多矿场不同意部署该方案。这项建议调整了煤气费的构成。虽然不能解决GAS FEE偏高的问题,但可以提高人们对GAS FEE的期望值,改善经验。

最近还有一则相关消息。3月16日,以太坊的开发者菲利普·卡斯通圭(Philippe Castonguay)提出了另一项提案eip-3382,提议将区块天然气限额定为每个区块1250万天然气。并更新块验证规则。如果气限不等于1250万,则区块无效。这是为了就区块的瓦斯限制达成共识,而不是受到矿工的限制。

在原有的规则中,块气体限值是以太坊中唯一不由节点一致性决定的数据部分,是矿工们选择的参数。他认为,这是一个关键参数,需要节点一致性,以避免少数参与者对网络其余部分施加任何突然的有害变化。

有许多调整GAS FEE的建议,如eip1559和eip-3382。由于煤气费在以太坊的运营中起着重要的作用,所以有很多关于煤气费的历史故事。如果你浏览所有关于煤气费的新闻,你会发现解决煤气费并不容易。

今天,white plan团队将向读者介绍所有以太坊的GAS FEE相关资料,包括设计变更、EIP修订等,希望您能使用。

如果你想了解煤气费,你可以从txstreet的动态图像中生动地了解它。

深入理解以太坊气体机制:从概念起源和21个eip开始

Txstreet将以太坊的包装过程可视化为运输过程

如果将街区包装并抽象成一个汽车载客的过程,那么道路宽度和汽车容量都会受到限制。因此,进车过程中会有竞争,可以理解为价格**的进车,平均成本会因为拥堵而“被抬高”。

汽车行驶的道路是最基本的资源。它需要支付“过路费”来支付,而包装的煤气费是“煤气费”。羊毛来自羊,煤气费最终支付了“过路费”。因此,GAS FEE是使用以太坊资源的最终付款。

关于气体的第一把钥匙

气体的概念来自计算机领域。在以太坊,它首先来自以太坊的黄皮书。黄皮书的作者是Polkadot的创始人加文。说起来很吓人。以太坊黄皮书指出,理论上,交易中包含的气体可以是任何值,因为理论上,它需要覆盖更多的交易,最多2^256(它可以覆盖几乎与已知宇宙中原子数量相同的交易)。

虽然设计是无限的,但处理能力是有限的。在gETH版本1.6中,gas计算被切换到64位值,这样一个具有64位gas限制的块可以容纳44倍于人体红细胞数量的红细胞。然而,这是一种理论,与现实相去甚远。

在确认这个版本之前,还有一个有趣的细节。在vitalik设计的以太坊气体模中,气体费用支付流程是合同中的默认流程。也就是说,在合同执行过程中,合同中的余额会减少。如果余额不足,合同将被中止。

深入理解以太坊气体机制:从概念起源和21个eip开始1

早期以太坊合同中执行设置的内置扣除

后来,加文开始参加以太坊。进入后,加文修改了燃气的支付机制,由合同执行支付改为转移支付,即合同执行人支付。Vitalik描述了从“合同支付”到“发送方支付”的转变,而不是立即对每个交易步骤进行一点调整。

深入理解以太坊气体机制:从概念起源和21个eip开始2

在以太坊的早期,维塔利克和加文是迷你黑客,杰弗里是中间的神

这是一个相对容易理解的“汽油费支付”。如果我们解剖更详细的部分,我们需要看看黄皮书中气体的相关部分。

天然气是以太坊所有计算量的计价单位。你想在以太坊上做的计算越多,你要付的汽油就越多。

这种用户付费方式可以避免资源滥用。可以理解,一旦开发人员为每种操作付费,代码将尽可能简洁高效地编写。此外,gas的存在还可以防止攻击者通过无效操作淹没以太坊网络(因此执行许多操作需要gas)。下面的统计EIP之一是提高gas访问帐户的价值,以减少攻击的可能性。

除了知道在哪里支付汽油费,我们还需要知道gasprice和gaslimit。

Gasprice是交易发送方愿意为每单位天然气支付的价格(由Wei度量)。交易发送者可以定制他愿意为每单位天然气支付的价格。假设一笔交易的费用为10元,发送方愿意支付3元,交易的总费用为30元。有先进的选择来调整我们钱包里的汽油费。

Gaslimit是发送方可以接受的执行事务的**气体量。如果没有限制,发送者帐户的余额可能会被错误地消耗掉。Gaslimit是一种安全机制,用于防止帐户中的所有ETH被消费。

此外,gaslimit也可以定义为预付天然气。当节点验证事务时,它首先将gasprice乘以gaslimit来计算事务的固定成本。如果交易发送方的账户余额低于交易的固定成本,则交易被视为无效。交易完成后,剩余的天然气将退还给寄件人的账户,这就是为什么当我们使用metmask执行合同时,我们估计天然气非常昂贵,但执行后价格并没有那么高。

深入理解以太坊气体机制:从概念起源和21个eip开始3

块中包含的内容

这是块的固有内容。在交易部分,有237笔转让和39笔合同内交易。如果你看交易,你可以看到更详细的汽油费用。也可以看出,燃油限制为12493113。在本文开头提到的eip-3382中,每个区块的天然气限值限制在12500000,这是本部分。这样,每个区块的奖励之和将是可控的。

对于ETH1.0链,每个操作码都有一个煤气费的计算。我们截取了价格较高的部分供读者参考。操作码最终决定了链的执行和资源的使用。例如,一个基本的想法是创建一个合同。费用计算如下:

固有成本=gtransaction+gtxdatazero*nzeros+gtxdatanonzero*nnonzeros+gtxcreate

其中:

G变速箱=21000 Wei

Gtxcreate=32000微

Gtxdatazero=4微

Gtxdatanonzero=68微(伊斯坦布尔升级时改为16微)

您可以根据号码取以下操作码。

深入理解以太坊气体机制:从概念起源和21个eip开始4

以太坊1.0链操作码对应气体消耗值

根据以上内容,我们可以得到一个基本的认识,即煤气费是利用以太坊链上的资源产生的。计算越多,气体含量越高。在智能合约的运作中,每一步都需要付出代价。此外,如果发送方将gas设置为高,矿工将优先处理事务,因为矿工可以选择先打包一些事务。

21个与GAS FEE密切相关的EIP

下一步,我们可以详细了解天然气的EIP方案。这些建议大致按时间顺序排列。

Eip-5:调整回呼用气量

这个EIP使得调用返回字符串和其他动态大小数组的函数成为可能。目前,当从以太坊虚拟机中调用另一个契约/函数时,必须预先指定输出的大小。您还必须为未写入的内存付费,这使得返回动态大小数据非常昂贵且不灵活,几乎无法使用。在这个EIP中提出的解决方案是只为调用返回时实际写入的内存付费。

Eip-150:大规模IO操作的天然气成本变化

将extcodesize的气体成本从20增加到700。

将extcodecopy的基本气体成本从20增加到700。

将galance的成本从20增加到400。

将sload的汽油成本从50增加到200。

增加通话费用,删除通话和通话代码,从40到700。

将selfdstruct的天然气成本从5000增加到5000。
如果selfdstruct命中新创建的帐户,它将触发额外的25000汽油费(类似于call)。

将提议的天然气限额提高到550万。

Eip-158:状态清除

在任何情况下,零赎回余额的账户将不再消耗25000个账户的成本来创建gas

Eip-1108:降低alt_Bn128预编译气体成本

ECC预编译的当前价格太高。对预编译重新定价将极大地帮助以太坊上的许多隐私和扩展解决方案。对于基于以太坊的ZK-snark协议,eip-1108不仅可以大大降低验证ZK-snark的gas开销,而且有助于批量组合多个ZK-snark证明。它还可以将单个ZK snark电路拆分为一批单电路尺寸较小的ZK snark,使ZK snark更易于构建和部署。

目前,这些交易的成本约为60万煤气。这个EIP可以将其压缩到1000000 gas,这使得协议更加实用。

Eip-1283:sstore操作码的gas调整

EIP建议对sstore操作码进行计量更改,以实现合同存储的新用途,并在与大多数实施方案不匹配的地方降低过高的天然气成本。这可以作为eip-1087的一个替代方案,在eip-1087中,它尝试对变更缓存的不同优化策略的实现更加友好。

Eip-2028:降低交易数据成本

通过数学模和经验估计,建议将呼叫数据的gas代价(gtxdatanonzero)从68字节降低到16字节。

Eip-2200:净气体测量的结构化定义

此EIP为sstore操作码的净气体计量更改提供了结构化定义,可用于合同存储的新用途,并在与大多数实现不匹配的情况下降低了过高的气体成本。这可以作为eip-1283和eip-1706的组合使用。

Eip-2565:modexpgas成本

为了准确反映modexp预编译的实际运行成本,该EIP指定了一种计算gas成本的算法。该算法估计乘法复杂度的代价,并将其乘以执行幂运算所需的近似迭代次数。

Eip-1559:ETH 1.0链的收费市场变化

以太坊使用简单的拍卖机制,以历史价格对交易费用进行定价。用户发送带有出价的事务(“gaspices”),矿工选择出价**的事务。包括的交易是根据指定的出价支付。这会导致效率低下。

本弹性公网IP的方案是从基本资费开始,根据网络的拥塞程度由协议进行调整。当网络超过每种天然气的目标用量时,基本成本将略有增加,而当容量低于目标用量时,基本成本将略有下降。

由于这些基本成本的变化是有限的,因此可以预测不同区块之间基本成本的**差异。这样钱包就可以以高度可靠的方式自动为用户设置汽油费。预计即使在网络活跃期,大多数用户也不必手动调整GAS FEE。对于大多数用户来说,基本成本是从他们的钱包里估算出来的。

Eip-2929:国家接入操作码的天然气成本增加

增加的gas成本是sload(0x54)到2100,*call opcode fami(0xf1,F2,F4,FA),balance 0x31和ext*opcode fami(0x3b,0x3c,0x3f),以及2600 CD FREE(I)precompile。此外,可以改革存储的测量方法,以确保自毁固有的“实际存储负载”的正确定价。

通常,操作码gas成本的主要功能是估计处理操作码所需的时间,目标是使gas限制与处理块所需的时间限制相对应。然而,存储访问操作码(sload、call、balance和ext操作码)历来被低估。在2016年上海发生的DoS攻击中,在修复了最严重的客户端错误后,攻击者一直使用的策略之一就是简单地发送可以访问或调用大量帐户的事务。

所提出的EIP将这些操作码的成本增加了大约三倍,从而将最坏情况下的处理时间减少到大约7-27秒。数据库布局的改进涉及到重新设计客户端以直接读取存储,而不是跳转到Merkle树,这将进一步减少这种情况,尽管这些技术可能需要很长时间才能完全实现,而且即使有了这项技术,访问存储的IO销售也将保持可观的增长。

Eip-1077:用于合同呼叫的气体中继

使用DAPP的主要障碍是需要多个代币来执行链操作。尽管以太坊交易中始终需要ETH,但eip-191签名和转发支付可用于智能合约,以鼓励具有ETH的不受信任方执行交易。它可以规范它们的通用格式,允许用户用token支付交易,为应用开发者提供了极大的灵活性,可以成为应用用户与区块链交互的主要方式。

Eip-1087:存储操作的气体计量

EIP建议改变evmstore运营的收费方式,以减少不必要的天然气成本,并为合同储存提供新的使用案例。

Eip-1285:添加gcallstipendgas调用操作码

Gcallstipend将call操作码中的cost参数从2300个gas单位增加到3500gas单位。

Eip-1380:降低内部通话的天然气成本

降低内部调用的gas开销将从SOLidness和Vyper等智能合约语言中获益匪浅,因此它们可以使用call而不是跳转内部操作调用来使用操作码。

Eip-1613:加油站网络

非ETH用户可以通过允许合同接受“收款”和支付GAS FEE用来访问智能合同(如DAPP)。

目前,与DAPP的通信需要向ETH支付煤气费,这限制了DAPP的使用仅限于以太坊用户。因此,合同所有人可能希望支付GAS FEE用以增加用户使用权,或者让其用户以法定货币支付GAS FEE用。或者,第三方可能希望补贴某些合同的天然气成本。eip-1077中描述的解决方案可以允许来自不包含ETH的地址的事务。

Eip-1930:具有严格gas语义的调用。如果没有足够的气体,请恢复

添加智能合约功能,对特定数量的气体进行调用。如果不可能,请返回执行。

Eip-2045:EVM操作码的颗粒气体成本

计算EVM操作码(add、sub、Mul等)通常与高估用于存储操作码的I/O(sload、sstore等)有关。目前,**气体成本为1(即气体单位),大多数操作码的成本接近1(例如3、5或8),因此可能降低成本的范围是有限的。一个新的最小气体单位,称为“粒子”,是气体的一部分,它将扩大气体成本的范围,从而将其降低到目前的**水平以下。

Eip-2046:减少预编译静态调用的gas开销

调用预编译的基本gas staticcall的成本从700降低到40。这将允许更有效地使用预编译,总成本不到700美元。

Eip-2542:新操作码txgaslimit和callgaslimit

允许智能合约访问有关当前交易和执行框架的天然气限制的信息。随着中继、元交易、GAS FEE用和账户提取等概念的普及,一些合同能够**准确地跟踪天然气支出是非常重要的。

Eip-3322:账户储气操作代码

通过将天然气从需求量较小的区块转移到需求量较大的区块,带来了天然气的供应弹性和价格稳定性。不幸的是,这奖励了不必要的国家增长。通过引入先进的天然气存储机制,天然气市场将需要更少的存储和计算。

Eip-2780:减少内部交易气体

将内部交易成本从21000降低到70000。

目前,21000笔交易中天然气的固有成本使得发送ETH的成本非常高,而小批量(几十美元)的成本通常令人望而却步。尽管其他eip(如EIP-1559)也考虑了天然气价格和**价格拍卖的变化,但如果以安全的方式进行交易,将大大降低发送ETH的成本并实现更多此类交易,这将是积极的。

第二个关键:上卷和加油

早期的天然气故事是关于以太坊GAS费用模式的公式。目前,除了降低GAS FEE外,扩大和降低GAS FEE的**办法就是压缩交易数据。

这与汇总有很大关系。

一个简单的以太坊事务(发送ETH)大约需要110字节。然而,在rollup中ETH传输只占用12字节。因此,rollup可以将基本链的可伸缩性提高大约10倍。在特定的计算中,使用rollup,可伸缩性甚至可以提高100倍以上。

这**是一个令人印象深刻的成就,这就是为什么ETH2.0已经成为一个以汇总为中心的开发路线。

煤气费调整是一个长期的概念和过程,是众多以太坊工程师对细节进行修复的结果。如果只看一个煤气费的调整,就感觉不到煤气费的重要性和调整煤气费的难度。但是,可以肯定的是,以太坊气体问题的最终解决方案必须是ETH2.0。请敞开心扉。

温馨提示:

文章标题:深入理解以太坊气体机制:从概念起源和21个eip开始

文章链接:https://www.btchangqing.cn/213745.html

更新时间:2021年03月18日

本站大部分内容均收集于网络,若内容若侵犯到您的权益,请联系我们,我们将第一时间处理。

区块链

全面解构coinbase:上市是里程碑和新起点

2021-3-18 19:03:06

区块链

以太坊的GPU挖掘模式即将改变

2021-3-18 19:09:02

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索