月亮链 月亮链
Ctrl+D收藏月亮链
首页 > Uniswap > 正文

GAS:深入理解以太坊 Gas 机制:从概念起源和 21 个 EIP 开始_memecalf

作者:

时间:1900/1/1 0:00:00

Gas费问题是目前以太坊1.0链面临最严重的问题之一,尽管以太坊的算力很多,但任务能力因为区块链的结构问题,以太坊在处理大量任务的时候会拥堵,拥堵后,Gas费会很高。

DeFi应用爆发式增长,让这种现象愈演愈烈。这里要提到的是,以太坊除了打包区块链交易外,智能合约等也是发布到链上的,所以智能合约在链上执行的时候要消耗资源,因此用户在DeFi里做的几乎每一步,都需要支付Gas费,这也是Gas模型的一个问题所在。

近日以太坊社区对EIP-1559的讨论也是更加激烈,因为有很多的矿池并不同意部署这个提案,这个提案调整了Gas费的构成,虽然无法解决Gas高的问题,但可以提升对Gas费的预期,完善体验。

还有一个近期的相关消息,3月16日,以太坊的一位开发者PhilippeCastonguay提出了另一个提案EIP-3382,提议将区块Gas限制固定为每区块12,500,000Gas。并且更新块验证规则,如果Gas限制不等于12,500,000,则区块无效。这是为了对区块Gas限制达成共识,并且不受矿工制约。

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

像EIP1559、EIP-3382这样对Gas费进行调整的提议很多,因为Gas费在以太坊运行过程中占据了重要地位,所以,Gas费有很多历史故事,如果把所有关于Gas费的消息全部浏览完毕,可以发现,解决Gas费并非易事。

今天,白计划团队会为读者在文中提及大约全部以太坊的Gas费关联资料,包含设计变化、EIP修订等。愿您有所用。

如果想要理解Gas费,从TXStreet的动态图像可以很形象去理解。

TXStreet将以太坊区块打包过程形象化为交通运输

如果把区块打包抽象成一个汽车载人运输过程,会遇到道路宽度有限、汽车容量有限因素,所以进入汽车的过程就会有竞争,可以理解为以价高者的,而平均的费用也会因拥堵被「哄抬」。

何宝宏:元宇宙将推动数字经济与实体经济走向深入融合:金色财经报道,中国信息通信研究院云计算与大数据研究所所长何宝宏在接受采访时表示,我国产业数字化规模仍有不小的提升空间,数字技术创新应用依然迫切,此外,元宇宙将推动数字经济与实体经济走向深入融合。当前的数字经济更像是传统经济的数字化转型,而未来的数字原生世界,元宇宙或者Web3.0里面企业的组织形态理应发生非常大的变化。

元宇宙是数字技术、数字产品、数字产业发展的必然形态,将推动数字经济与实体经济走向深入融合。何宝宏表示,当前,元宇宙概念边界仍在持续探索,技术工具还有较大优化空间,现象级应用有待开发,整体还处于起步培育的初级阶段。[2023/4/9 13:52:13]

汽车行驶的道路,是基础资源,需要支付「过路费」来Cover,而打包需要的Gas费是「Gas费」,羊毛出在羊身上,Gas费用来最终支付「过路费」。所以Gas费就是最终支付以太坊的资源使用的费用。

早期关于Gas的第一个key

Gas的概念是来自计算机领域,在以太坊里看到,最早来源于以太坊黄皮书,黄皮书的作者是Polkadot创始人Gavin,说起来很吓人,以太坊黄皮书指出,理论上,交易中包含的Gas可以是任意值,因为理论上要涵盖更多交易,最高可达2^256。

虽然设计无限,但处理能力是有限的,在Geth1.6版本中,Gas计算切换为使用64位值,这样Gas限制为64位的单个块可以容纳的交易量是人体中红细胞数量的44倍。不过这是理论,现实远远大相径庭。

在这个版本确认前,还有一个较为有趣的细节,在Vitalik设计的以太坊Gas模型里,是把Gas费支付过程默认在合约里,也就是一个合约执行过程中,合约中的余额会减少,如果余额因为执行消耗不足了,合约会暂停。

早期以太坊合约里执行设置的内置扣费

而后来Gavin开始参与以太坊,进入后就修改了Gas的付费机制,从这种合约执行支付变成了转账人支付,也就是合约执行人支付。Vitalik描述为,从「合同付款」方式转变为「发送者付款」方式,以代替每个单独的交易步骤立即拿走一点ETH。

国务院办公厅:深入推进人工智能社会实验,开展区块链创新应用试点:1月6日消息,国务院办公厅发布关于印发要素市场化配置综合改革试点总体方案的通知,通知指出,发挥领军企业和行业组织作用,推动人工智能、区块链、车联网、物联网等领域数据采集标准化。深入推进人工智能社会实验,开展区块链创新应用试点。[2022/1/6 8:29:41]

以太坊早期Vitalik和Gavin在迷你黑客松上,中间的大神是Jeffrey

这是比较容易理解的「Gas费支付」。如果解剖更细节的部分,我们要看黄皮书里Gas的关联部分。

Gas是以太坊中所有计算量的计价单位,想要在以太坊上进行越多计算,则要支付越多Gas。

这种采取使用者付费的模式,能够避免资源滥用。可以理解为一旦开发者为每种运算支付费用,就会尽可能将代码写得简洁高效,另外,Gas的存在还能阻止攻击者通过无效运算,对以太坊网路进行泛洪攻击,下文中统计的一个EIP就是提高了对账户访问的Gas值来减少攻击可能性的。

除了知道哪里需要付Gas,我们还需要了解GasPrice和GasLimit。

GasPrice为交易发送方对每单位Gas愿意支付的价格,交易发送方可以自定义愿意支付的每单位Gas价格。假设一笔交易需要耗费10Gas,发送者愿意支付3Wei/Gas,交易的成本总价就是30Wei,在我们使用的钱包里都会有调整Gas费的高级选项。

GasLimit为交易发送方最多能接受的用于执行交易的Gas量。假如没有GasLimit,可能会导致发送方的账户余额被误消耗殆尽,GasLimit是安全机制,防止把账户中所有ETH消耗掉。

另外,GasLimit也可以被定义为预付Gas。当节点在验证交易时,先将GasPrice乘GasLimit算出交易的固定成本。如果交易发送方的账户余额小于交易固定成本,则该交易视为无效。交易执行完之后,剩余的Gas会退回至发送方账户,这也是为什么我们在使用MetMask执行合约的时候,预估Gas很贵,但执行完毕价格并没有那么高。

声音 | 国家医疗保障局副局长:国家医疗保障局将深入研究引入区块链等先进技术:金色财经报道,国家医疗保障局副局长施子海表示,国家医疗保障局将不断探索创新,深入研究引入5G和区块链等先进技术,加快完善电子凭证功能和推广应用,不断优化设计、完善功能、简化流程,提升群众使用体验,加强业务协同。[2019/11/26]

一个区块里包含的内容

这是一个区块里的固有内容,在交易部分,有237笔转账和39笔合约内部交易,如果具体查看交易就可以看到更详细的Gas费花销。也可以看到燃料限制为12493113,文章开头提到的EIP-3382中,将每个块的Gas限制限制在12500000,就是这个部分。这样,每个块里拿到的奖励总和会比较可控。

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

固有成本=Gtransaction+Gtxdatazero*Nzeros+Gtxdatanonzero*Nnonzeros+Gtxcreate

其中:

Gtransaction=21,000Wei

Gtxcreate=32,000Wei

Gtxdatazero=4Wei

Gtxdatanonzero=68Wei(在伊斯坦布尔升级时会改为16wei)

大家可以对以下的操作码对号入座。

以太坊1.0链的操作码对应的gas值消耗

据以上的介绍,我们可以得到的基本理解是,Gas费是因为使用以太坊的链上资源产生的,计算越多,Gas越高,在智能合约合约操作里,每个单独的步骤都需要支付Gas。另外,补充一点,如果发送者把Gas设置的很高,矿工会优先执行交易,因为矿工可以选择优先打包某些交易。

声音 | 国家医疗保障局副局长:国家医疗保障局将深入研究引入5G和区块链等先进技术:11月24日,全国医保电子凭证发布式在山东省济南市举行。国家医疗保障局副局长施子海表示,国家医疗保障局将不断探索创新,深入研究引入5G和区块链等先进技术,加快完善电子凭证功能和推广应用,推进医保治理体系和治理能力现代化,提升为民服务质量和水平,让更多便民举措更加广泛地惠及人民群众。(第一财经)[2019/11/24]

21个与Gas费息息相关的EIP

接下来我们就可以详细看一下关于Gas的EIP提案。提案大约根据时间先后排列。

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

此EIP使得调用RETURN字符串和其他动态大小的数组的函数成为可能。当前,当从以太坊虚拟机内部调用另一个合约/功能时,必须预先指定输出的大小。还必须为未写入的内存支付费用,这使得返回动态大小的数据既昂贵又不灵活,以至于实际上无法使用。此EIP中提出的解决方案是仅对CALL返回时实际写入的内存支付。

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

将EXTCODESIZE的Gas费用从20增加到700。

将EXTCODECOPY的基础Gas成本从20增加到700。

将BALANCE的Gas费用从20增加到400。

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

将CALL,DELEGATECALL,CALLCODE的Gas费用从40增加到700。

将SELFDESTRUCT的Gas成本从5000增加到5000。如果SELFDESTRUCT命中一个新创建的帐户,则会触发25000的额外Gas费用。

将建议的Gas限制目标提高到550万。

EIP-158:状态清除

在任何情况下,call余额等都为0的账户都不再消耗25000个帐户创建Gas的成本

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

椭圆曲线计算预编译当前价格过高。对预编译进行重新定价将大大有助于以太坊上的许多隐私解决方案和扩展解决方案。对于基于以太坊的基于zk-SNARK的协议,EIP-1108不仅会大大降低验证zk-SNARK的Gas成本,而且还可以帮助将多个zk-SNARK证明批量组合在一起。这也是一种可用于将单片zk-SNARK电路拆分为一批具有较小单个电路尺寸的zk-SNARK的技术,这使得zk-SNARK都更易于构造和部署。

北京市委书记蔡奇:深入研究区块链技术及应用,打造产业集群:昨天上午,北京市召开网络安全和信息化工作会议,北京市委书记蔡奇强调,坚持以信息化培育新动能推动新发展,使信息化成为首都发展的新动能、城市治理的新手段、公共服务的新方式,切实增强人民群众的获得感幸福感安全感。大力发展数字经济,深入实施大数据和云计算发展行动计划,深入研究区块链技术及应用,打造产业集群。优化电子政务,推进全市统一的基础公共云平台建设,进一步打破信息壁垒、提升服务效率,让百姓少跑腿、信息多跑路。[2018/5/26]

目前,这些交易的成本约为6,000,000Gas。此EIP可以将其减少到1,000,000Gas,这使该协议更加实用。

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

该EIP提议对SSTORE操作码进行计量更改,以实现合同存储的新用法,并在与大多数实现工作方式不匹配的地方减少过多的Gas成本。这可以作为EIP-1087的替代方案,在EIP-1087中,它尝试对更改缓存使用不同优化策略的实施更友好。

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

建议将Calldata的Gas成本从当前的68字节降低到16字节,并通过数学建模和经验估算来支持。

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

此EIP为SSTORE操作码提供了净Gas计量更改的结构化定义,可用于合同存储的新用法,并在与大多数实现工作方式不匹配的地方降低了过多的Gas成本。这可以当作EIP-1283和EIP-1706的组合。

EIP-2565:ModExpGas成本

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

EIP-1559:ETH1.0链的收费市场变化

以太坊使用简单的拍卖机制以历史价格定价交易费用,用户以出价发送交易,矿工选择出价最高的交易,包含在内的交易按照指定的出价支付。这导致效率低下。

此EIP中的建议是从基本费用金额开始,该费用由协议根据网络的拥挤程度上下调整。当网络超出每块Gas的目标使用量时,基本费用会略有增加,而当容量低于目标数量时,基本费用会略有下降。

由于这些基本费用的变化受到限制,因此不同块之间基本费用的最大差异是可以预测的。然后,这允许钱包以高度可靠的方式为用户自动设置Gas费。预计即使在网络活跃期间,大多数用户也不必手动调整Gas费。对于大多数用户来说,基本费用将由他们的钱包来估算。

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

增加的Gas成本SLOAD至2100,以及*CALL操作码家族、BALANCE0x31以及EXT*操作码家族、以及2600免CD预编译。此外,还可以改革SSTORE计量方式,确保对SELFDESTRUCT这些操作码中固有的「实际存储负载」进行正确定价。

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

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

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

采用DApp的主要障碍是需要多个token来执行链式操作。允许用户签名消息以显示执行意图,但允许第三方中继器执行消息可以避免此问题,尽管以太坊交易始终需要ETH,但智能合约可以采用EIP-191签名并转发付款激励具有ETH的不受信任方执行交易。可以标准化它们的通用格式,以及用户允许以代币支付交易的方式,为应用程序开发人员提供了很大的灵活性,并且可以成为应用程序用户与区块链交互的主要方式。

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

该EIP提议对EVMSSTORE操作的Gas收费方式进行更改,以减少不必要的Gas成本,并为合同存储提供新的用例。

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

Gcallstipend将CALL操作码中的费用参数从2,300增至3,500Gas单位。

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

降低内部调用的Gas成本将极大地受益于诸如Solidity和Vyper之类的智能合约语言,这样他们便能够用CALL代替JUMP内部操作调用使用操作码。

EIP-1613:Gas站网络

通过允许合同接受「代收货款」并为Gas付费,使非ETH用户可以访问智能合约。

与dapp通讯目前需要向ETH支付Gas费,这限制了dapp的采用仅限于以太坊用户。因此,合同所有者可能希望为Gas支付费用以增加用户获取量,或者让其用户以法定货币支付Gas费用。或者,第三方可能希望补贴某些合同的Gas成本。如EIP-1077中所述的解决方案可以允许来自不包含ETH的地址的交易。

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

添加智能合约功能,以使用特定数量的Gas执行CALL。如果无法做到这一点,则应返回执行。

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

计算EVM操作码通常相对于高估到用于存储操作码的I/O。当前,最小的Gas成本为1,并且大多数计算操作码的成本接近1,因此可能降低成本的范围受到限制。一种新的最小Gas单位,称为「颗粒」,是一种Gas的一部分,将扩大Gas成本的范围,因此可以降低到当前的最低水平以下。

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

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

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

允许智能合约访问有关当前交易和执行框架的Gas限制的信息。随着中继,元交易,Gas费和帐户抽象等概念的普及,对于某些合同而言,能够绝对精确地跟踪Gas支出变得至关重要。

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

通过将Gas从需求量较小的区块移动到需求量较大的区块,从而带来了Gas供应弹性和价格稳定性。不幸的是,这奖励了不必要的状态增长。通过引入高级的Gas存储机制,Gas市场将需要较少的存储和计算。

EIP-2780:减少内部交易Gas

降低内在交易的成本21,000到7,000Gas。

当前21,000交易的Gas内在成本使发送ETH的成本非常高,而小批量的成本通常高得令人望而却步。虽然其他EIP也考虑了Gas价格和首次价格拍卖的变化,但如果以安全的方式进行,大幅降低发送ETH的成本并实现更大数量的此类交易将是积极的。

第二个key:Rollup与Gas

早期的Gas故事是关于以太坊Gas费模式的制定,而目前来看,除了对Gas费降低外,最好的扩容和降低Gas费方式还有压缩交易数据。

这便与Rollup关系很大。

一个简单的以太坊交易需要约110个字节。但是,Rollup中的ETH传输仅占用12个字节,所以,Rollup可能会使基础链的可伸缩性提高约10倍,在特定的计算里,采用Rollup,可伸缩性甚至可以提高超过100倍。

这是绝对可观的成绩,这也是为什么Eth2.0成为了以Rollup为中心的开发路线。

Gas费调整是个长久的概念和过程,是无数以太坊工程师对细节修复的结果,如果只查看单个GasEIP的调整,不足以感受到Gas费的重要和调整Gas费的难度。不过,可以肯定的是,以太坊Gas问题最终的解决方案,一定是Eth2.0,请保持一颗期待的心吧。

标签:GAS以太坊CALALLgas币一分钟暴涨5600倍以太坊价格今日行情实时memecalfScallop

Uniswap热门资讯
区块链:区块链圈频现百万元年薪招聘 现金+股票仍难觅良才_bsn币什么时候上线

张力正站在择业的十字路口。近日,多则百万元年薪的招聘广告刷爆很多区块链人才的朋友圈。某区块链公司招聘普通区块链技术岗人才,包括了密码学研发工程师、区块链前端工程师、算法工程师、DeFI开发等职位.

1900/1/1 0:00:00
ENT:观点 | 社交代币是一种“影响力”的金融化_RES

本文来源:IOSG,原题《IOSGWeeklyBrief|社交代币是一种“影响力”的金融化#69》.

1900/1/1 0:00:00
LAYER:以太坊 Layer 2 的 N 个未解之谜以及潜在的解决方案_Rolaz Gold

以太坊Layer2即将在本月进入一个新的阶段,基于Rollup技术的Optimism网络将正式在主网上推出,OffchainLabs的Arbitrum方案最快也会在本月或下个月推出.

1900/1/1 0:00:00
NFT:嫌以太坊上造NFT太贵?那就来无Gas的Ergo_CTI

Ergo落地应用之NFT市场:Ergo拍卖行作者:GuyBrandon Ergo公链平台允许用户安全而又轻松地出售Ergo的NFT,这是不断发展的DeFi运动的一次重大发展.

1900/1/1 0:00:00
NFT:你站在哪个世界看NFT 物理世界还是数字世界_Cryptoheadz

分析NFT的文章很多,我写自己对NFT的感受吧,希望能提供一个视角。我表达的主题是:你站在哪个世界看NFT,物理世界还是数字世界.

1900/1/1 0:00:00
NFT:HyperPay焦点:NFT市场持续火爆 如何进行价值投资_HyperLending

《HyperPay焦点》AMA第十六期将于3月18日19点在HyperPay钱包及合作媒体社区举行,专场主题为“NFT市场持续火爆?如何进行价值投资”.

1900/1/1 0:00:00