深入理解以太坊 Gas 机制:从概念起源和 21 个 EIP 开始_币世界+白计划

2021-03-18 16:37 栏目:行业动态 来源:网络整理 查看()

燃气费调整是一个长期的概念和过程。目前最终的解决方案在Ethereum 2.0。燃气费问题是以太网1.0链目前面临的最严重的问题之一。虽然以太网有很大的计算能力,但是由于区块链的结构问题(每个整体节点计算相同的数据,所以任务在掠夺单个节点的计算资源),以太网在处理大量任务时会出现拥塞。拥堵后,煤气费会很高。

DeFi应用的爆炸式增长使得这种现象越来越严重。这里要提到的是,除了打包区块链事务,Ethereum还在链上发布智能合同,所以智能合同在链上执行时会消耗资源。所以用户在DeFi做的几乎每一步都需要支付Gas费用,这也是Gas模式的问题。

最近,关于EIP-1559的讨论在埃瑟伦社区变得更加激烈,因为有许多矿池不同意这一提议的部署。该提案调整了燃气费的构成。虽然不能解决煤气费高的问题,但可以提高煤气费的期望值,改善体验。

还有一个最近的相关新闻。3月16日,以太博物馆的开发商菲利普卡斯顿圭提出了另一项提案EIP-3382,提议将街区燃气限额定为每街区1250万燃气。并更新区块验证规则,如果Gas限额不等于1250万,则区块无效。这是为了在区块内达成天然气限制共识,不受矿工限制。

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

像EIP1559和EIP-3382这样调整燃气费的建议很多,因为燃气费在以太网的运营中占有重要地位,所以关于燃气费有很多历史故事。如果把关于煤气费的新闻都浏览一遍,可以发现解决煤气费并不容易。

今天,白色计划团队将会提到以太网的所有燃气费用相关数据,包括设计变更、EIP修订等。愿你使用它。

如果想了解燃气费,可以从TXStreet的动态图像中形象地了解。

深入理解以太坊 Gas 机制:从概念起源和 21 个 EIP 开始_币世界+白计划

TXStreet将把邰方街区的包装过程形象化为运输

如果把区块包装抽象为汽车载人运输的过程,会遇到道路宽度有限、汽车运力有限的因素,所以进入汽车的过程中会有竞争,可以理解为价格最高的那种,平均成本会因为拥堵而“抬高”。

汽车行驶的道路是基本资源,需要“过路费”来覆盖,而打包的煤气费是“煤气费”。羊毛出在羊身上,煤气费最终要交“过路费”。因此,燃气费(Gas fee)是使用以太网资源的最终付款。

早期关于 Gas 的第一个 key

Gas的概念来源于计算机领域。在以太博物馆看到的。它起源于以太网黄皮书。黄皮书的作者是波尔卡多的创始人加文。说起来很吓人。以太网黄皮书指出,理论上,交易中包含的气体可以是任何值,因为理论上,应该覆盖更多的交易,最多2 256个(几乎可以覆盖已知宇宙中原子数量的交易)

虽然设计无限,但处理能力有限。在Geth 1.6版本中,Gas计算切换到使用64位值,这样一个64位Gas限制的单个块可以容纳人体内44倍的红细胞数量。但这是理论,和现实很不一样。

在这个版本确定之前,还有一个有趣的细节。在Vitalik设计的Ethereum Gas模型中,Gas费用支付流程在合同中是默认的,即在合同执行过程中,合同中的余额会减少,如果由于执行消耗而导致余额不足,则合同将被暂停。

深入理解以太坊 Gas 机制:从概念起源和 21 个 EIP 开始_币世界+白计划

早期以太网合同中建立的内置扣除

后来加文开始参与Ethereum,进入后修改了Gas的支付机制,由合同执行人支付改为转让人支付,即合同执行人支付。Vitalik被描述为从“合同支付”方法改变为“发送方支付”方法,以立即带走一点eth,而不是每个单独的交易步骤。

深入理解以太坊 Gas 机制:从概念起源和 21 个 EIP 开始_币世界+白计划

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

这是一个相对容易理解的“燃气费支付”。如果解剖更详细的部分,就要看黄书《气》的相关部分。

气体是以太场所有计算的定价单位。如果你想在以太网做更多的计算,你必须支付更多的燃气。

这种用户付费模式可以避免资源滥用。可以理解的是,一旦开发人员为每一个操作付费,代码就会写得尽可能简洁高效。此外,Gas的存在可以防止攻击者通过无效操作淹没以太网(因此,需要Gas执行许多操作)。下面统计的一个EIP是为了增加账号访问的Gas值来降低被攻击的可能性。

除了知道在哪里支付燃气费用,我们还需要了解燃气价格和燃气限额。

GasPrice是交易发送方愿意支付的每单位燃气的价格(以Wei衡量),交易发送方可以定制自己愿意支付的每单位燃气的价格。假设一笔交易花费10魏煤气,发送方愿意支付3魏/煤气,交易总成本为30魏。我们钱包里有调整汽油费的高级选项。

气体限额是交易发送者在执行交易时可以接受的最大气体量。如果没有GasLimit,发送者的帐户余额可能会被误消费。GasLimit是一个安全机制,防止账户中所有ETH被消耗。

此外,燃气限额也可以定义为预付费燃气。当一个节点验证一个事务时,事务的固定成本是通过将GasPrice乘以GasLimit来计算的。如果交易发送方的账户余额低于交易的固定成本,则交易被视为无效。交易执行后,剩余的Gas会返还到发送方的账户,这就是为什么我们在执行与MetMask的合同时,估计Gas很贵,但是执行后价格并没有那么高。

深入理解以太坊 Gas 机制:从概念起源和 21 个 EIP 开始_币世界+白计划

块中包含什么

这是块中固有的内容。在交易部分,有237笔转账和39笔合同内交易。如果详细看交易,可以看到更详细的燃气费用。也可以看出燃油限制是12493113。在文章开头提到的EIP-3382中,每个区块的天然气限额被限定为12500000,这就是这一部分。这样每个区块获得的奖励总量会更加可控。

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

内在成本=gttransaction gtx datazero * NZ eros gtxdata非零* nnonzeros gtxcreate

其中:

交易=21,000魏

Gtxcreate=32,000魏

Gtxdatazero=4 Wei

gtxdata非零=68 Wei(伊斯坦布尔升级时会改为16 wei)

您可以相应地检查以下操作码。

深入理解以太坊 Gas 机制:从概念起源和 21 个 EIP 开始_币世界+白计划

对应于以太网1.0链操作码的气体消耗值

根据上面的介绍,我们可以对燃气费是利用以太网的链条资源产生的有一个基本的了解。计算越多,气体越高。在智能合同操作中,每个单独的步骤都需要支付煤气费。另外补充一点,如果发送方设置Gas高,矿工会优先交易,因为矿工可以选择先打包一些交易。

21 个与 Gas 费息息相关的 EIP

接下来,我们可以详细看看EIP关于天然气的提案。这些建议按大致的时间顺序排列。

EIP-5: 调整 RETURN 和 CALL 的 Gas 用量

这个EIP使得调用RETURN字符串和其他具有动态大小的数组的函数成为可能。目前,从Ethereum虚拟机内部调用另一个契约/函数时,必须提前指定输出大小。您还必须为未写入的内存付费,这使得返回动态大小的数据既昂贵又不灵活,因此实际上无法使用。在这个EIP中提出的解决方案是只为调用返回时实际写入的内存付费。

EIP-150:大量 IO 操作的 Gas 成本变化

将EXTCODESIZE的燃气成本从20提高到700。

将EXTCODECOPY的基本燃气费用从20增加到700。

将天平的气体成本从20增加到400。

将SLOAD的燃气成本从50增加到200。

CALL、DELEGATECALL和CALLCODE的汽油费用将从40英镑增加到700英镑。

自毁的毒气费用从5000增加到5000。

如果自毁击中一个新创建的账户,它将触发额外的气体费用25000(类似于调用)。

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

EIP-158:状态清除

在任何情况下,呼叫余额为0的帐户将不再消耗为25,000个帐户创建Gas的成本

EIP-1108:降低 alt_bn128 预编译 Gas 成本

椭圆曲线计算预编译当前价格太高。重新定价预编译将极大地帮助以太网中的许多隐私解决方案和扩展解决方案。EIP-1108不仅可以大大降低验证zk-SNARK的Gas成本,还可以帮助批量合并多个zk-SNARK证明。这也是一种可以将单个zk-SNARK电路分割成一批单个电路尺寸更小的ZK-snark的技术,这使得ZK-SNARK更容易构建和部署。

目前,这些交易的成本约为600万天然气。EIP可以减少到1,000,000气体,这使得协议更加实用。

EIP-1283:SSTORE 操作码的 Gas 调整

本EIP建议对SSTORE操作码进行计量更改,以实现合同存储的新用途,并在与大多数实施工作方法不匹配的地方减少过多的天然气成本。这可以作为EIP-1087的替代品。在EIP-1087中,它试图使针对变更缓存的不同优化策略的实现更加友好。

EIP-2028:减少交易数据用气成本

建议call data(gtxdata非零)的Gas开销从目前的68字节降低到16字节,要有数学建模和经验估计的支持。

EIP-2200:净 Gas 计量的结构化定义

本EIP为SSTORE操作码提供了净气体计量变化的结构化定义,可用于合同存储的新用途,并在与大多数实施工作方法不匹配的地方降低过多的气体成本。这可以看作是EIP-1283和EIP-1706的结合。

EIP-2565:ModExpGas 成本

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

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

Ethereum使用简单的拍卖机制,以历史价格对交易费用进行定价,用户以“Gasprices”发送交易,矿工选择出价最高的交易,包含的交易根据指定的出价进行支付。这导致效率低下。

这个EIP的建议是从基础费金额开始,根据网络的拥堵程度由协议调整。当网络超过每种燃气的目标用量时,基本成本会略有增加,而当容量低于目标量时,基本成本会略有降低。

因为这些基本成本的变化是有限的,所以可以预测不同区块之间基本成本的最大差异。然后,这允许钱包以高度可靠的方式自动为用户设置汽油费。预计即使在活跃的网络期间,大多数用户也不需要手动调整燃气费用。对于大多数用户来说,基本成本会通过钱包来估算。

EIP-2929:状态访问操作码的 Gas 成本增加

将Gas成本从SLOAD (0x54)提高到2100,*CALL操作码家族(0xf1,f2,f4,fa),BALANCE0x31和EXT*操作码家族(0x3b,0x3c,0x3f),以及2600无光盘预编译。此外,可以改革存储容量测量方法,以确保这些操作码“自毁”固有的“实际存储容量”定价正确。

通常,操作码Gas的成本的主要功能是估计处理操作码所需的时间,目标是使Gas限制对应于处理块所需时间的限制。然而,内存访问操作码(SLOAD,和CALL,BALANCE和EXT操作码)在历史上被低估了。在2016年上海的DoS攻击中,在修复了最严重的客户端错误后,攻击者一直有效的策略之一就是简单地发送可以访问或调用大量账户的交易。

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

EIP-1077: 合约调用的 Gas 中继

采用DApp的主要障碍是需要多个令牌来执行链操作。允许用户签署消息以表明他们的执行意图,但是允许第三方中继器执行消息可以避免这个问题。虽然以太网交易总是需要以太网,但智能合同可以使用EIP-191来签署和转发支付,以鼓励与以太网的不可信方执行交易。它们的通用格式可以标准化,用户允许使用令牌支付交易的方式为应用程序开发人员提供了极大的灵活性,并且可以成为应用程序用户与区块链交互的主要方式。

EIP-1087:用于 SSTORE 操作的 Gas 计量

本EIP提议改变电动汽车商店运营的燃气收费模式,以减少不必要的燃气成本,并为合同存储提供新的使用案例。

EIP-1285:在 CALL 操作码中增加 GcallstipendGas

GCALLstipend将调用操作码中的成本参数从2,300个单位增加到3,500个单位。

EIP-1380:降低了内部调用的 Gas 成本

,降低内部CALLs的Gas成本,将大大受益于Solidity、Vyper等智能契约语言,让他们可以用call代替JUMP内部操作调用来使用操作码。

EIP-1613: Gas 站网络

通过允许合同接受“收款”和支付天然气,使非ETH用户能够访问智能合同(如dapp)。

目前需要向ETH支付Gas费,用于与dapp的通信,限制了Ethereum用户对dapp的采用。因此,合同所有人可能想为燃气付费以增加用户的购买量,或者让他的用户用法定货币为燃气付费。或者,第三方可能希望补贴某些合同的天然气成本。EIP-1077中描述的解决方案可能允许来自不包含ETH的地址的交易。

EIP-1930:具有严格 Gas 语义的 CALL。如果没有足够的 Gas,请还原

添加智能合同功能,使用特定数量的气体执行呼叫。如果做不到这一点,你应该返回执行。

EIP-2045:EVM 操作码的颗粒 Gas 成本

计算EVM操作码(加、减、多等)。)通常是相对于I/O (SLOAD、SSTORE等)的。)这对于存储操作码来说被高估了。目前最小Gas成本为1(即一个Gas单位),大多数计算操作码的成本接近1(如3、5或8),因此可能降低成本的范围有限。一种新的最小燃气单位,称为“颗粒”,是一种燃气的一部分,它将扩大燃气成本的范围,因此可以降低到目前的最小水平以下。

EIP-2046:降低了对预编译进行静态调用的 Gas 成本

将调用预编译的基本Gas成本STATICCALL从700降低到40。这将允许更有效地使用预编译和预编译,总成本低于700。

EIP-2542:新的操作码 TXGASLIMIT 和 CALLGASLIMIT

允许智能合同访问关于当前交易和执行框架的气体限制的信息。随着接力、元交易、燃气费和账户抽象等概念的普及,对一些合同来说,绝对准确地跟踪燃气费用是非常重要的。

EIP-3322:帐户 Gas 存储操作码

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

EIP-2780:减少内部交易 Gas

将内部交易成本降低21,000到7,000Gas。

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

第二个 key:Rollup 与 Gas

,早期燃气故事讲的是以太网燃气收费模式的建立。目前,除了降低燃气费之外,最好的扩展和降低燃气费的方法是压缩交易数据。

这和Rollup有很大关系。

一个简单的Ethereum事务(发送ETH)大约需要110个字节。而Rollup中的ETH传输只占用12字节,因此Rollup可能会将基本链的可扩展性提高10倍左右。在特定的计算中,通过使用汇总,可伸缩性甚至可以提高100多倍。

这是一个绝对了不起的成就,这也是Eth2.0成为以Rollup为中心的发展路线的原因。

燃气费调整是一个长期的概念和过程,是无数以太网工程师修复细节的结果。如果只看单个煤气费的调整,我们感受不到煤气费的重要性和调整煤气费的难度。然而,可以肯定的是,以太气体问题的最终解决方案必须是Eth2.0。请保持期望。

微信二维码
售前客服二维码

文章均源于网络收集编辑侵删

提示:仅接受技术开发咨询!

郑重申明:资讯文章为网络收集整理,官方公告以外的资讯内容与本站无关!
NFT开发,NFT交易所开发,DAPP开发 Keywords: NFT开发 NFT交易所开发 DAPP开发