• 元宇宙:本站分享元宇宙相关资讯,资讯仅代表作者观点与平台立场无关,仅供参考。小黑屋  |   app下载
  • 注册
  • 查看作者
    • 详述 EIP-7706 并梳理最新的 Ethereum 的 Gas 机制

      引言:Vitalik在2024年5月13日发布了EIP-7706提案,提出了对现有Gas模型的补充方案,将calldata的gas计算单独剥离出来,并定制了类似Blob gas的base fee定价机制,进一步降低L2的运行成本。与之相关的提案还需要追溯到2022年2月提出的EIP-4844,相隔时间甚久,因此y ^ V Q h查阅相关资料,希望对最新的Ethereum Gas机制做一个r U x D F ; C p综述,方便大家快速了解。

      当前已支持的Ethereum Gas模型——EIP-1559和EIP-4844

      在最r i r | K `初的设计中,Ethereum采用了一个简单的拍卖机制对交易费用进行定价,这需要7 s t v q用户主动为自己的交易出价,也就是设置gas price,通常情况下,由于用户付出的交易费将归属于矿工,所以矿工将根据经济最优的N ~ P x L s o原则,按照出价高低来决定交易打包顺序,注意这是在忽略MEV的情况下。在当时核心开发者t q , – –看来这个机制面临着以下四个方面的问题:

      l交易费用水平的波动性与交易的共识成本之间的不匹配:对于处在活V n & 7 R @ q ) a跃状态的区块链中,交易的打包需求充足,这意味着区块可以被轻易填满,但这往往也意味着整体费l y B D D @ $用的波动性极大。例如当平均Gas Price为10 Gwei时,网络因在一个区块中再接受一笔交易而产生的边际成本是平均Gas Price为1 Gwei时的10 倍t ! ) t r,这是不可接受的。

      l对用户来说不必要的延迟:由于每f * 5 j个区块有gaslimit的硬性限制,加上历史交易量的自然波动,交易通常会等待几个区块才能被] e c U 0 4 S x打包,但这对整体网络来说是低效的;即不存在允许一个区块更大而下一个区块更小的“松弛”机制来满足逐个区块的需求差异。

      l定价效率低下:由于采用简单的拍卖机制导M , S致了公允价格发现的Z 8 = 1效率较低,这意味着对于用户来说,给出一个合理的定@ \ ` \ E t价将是困难的,这也就意味着有非常多w \ O S . R情况下,用户付高了手续费。

      l无区块奖励的区块链将不稳定:当取消挖矿带来的区块奖励并采取单纯的手续费模型时,可能会导致很多不稳定,例如激励挖掘p ) P & 3 I X L d窃取交易费用N Z l N C % N的“姐妹块”,开启更0 j e 9 J e强大的自私挖掘攻击向量等。

      直到EIP-1^ J c O 2 (559的提出与执行,Gas模型有个第一次迭代,EIP-1559时Vitalik: ` s x等核心开发者在. P T _ p y 52019年4月13日提出的,并在2021年8月5日的London升级中被采用,该机制摒弃了拍卖机制,转而采用了一种Base fee和PriorityR p 2 fee的双定价模型,其中Base fee将根据父区块中已产生的gas消耗情况与一个浮动且递归的g5 } ; } \as taI ] @ S 7rget之间的关系通过一个既定的数学模型定量计算,直观的效果为若上一个区块中gaQ C fs使用情况超过了预定的gas target时,则上调base fee,若不及gas target,则下调base fee,这样做既可以比较好的反应供需关系,又可以使得对于合理gas的预测变得j p U ] j *更加精准,不至于出现由于误8 N [ w @ L 0 & 5操作导致的天价Gas Price,因为base fee的计算是直接由系统决定的而非用户自由指定。具体的代码如下:

      详述 EIP-7706 并梳理最新的 Ethereum 的 Gas 机制

      其中可知当parent_gas_Z H ; % Kused 大于parent_gas_target时,那么当前区块的base fee将相比于上一个区块的base fee加上一个# l C G g j 0 s 3偏移值,至0 : o O c c 8 T于偏移值则是取parent_base_fee乘以上一个区块gas总用度相对gas target的a ] G r z偏移量并对gas target与一个常量取余与1的最大值。反之逻辑类似。

      另外BK = I * \ Aase fee将不再作为奖励分配给矿工,而是直接销毁,从而时ETH的经济模型处于通缩的状态,有利于价值的稳定。而另一方面Pr[ T f e S sio@ \ C [ =rity fee则相当于用户给矿工的打赏,可以自由定价,这一定程度上可以让矿工的排序算法# u @ D n M P % e得到一定程度) F D j z 9 2 & O的复用。

      详述 EIP-7706 并梳理最新的 Ethereum 的 Gas 机制

      随着时间推进到2021年,那时Rollup的发展逐渐进入佳境,我们知道无论OPu K I / e I 9 ] J Rollup还是ZK Rollup都意味着需要将L2的数据做压缩处理后的某些证明数据通? h & | ) } j j e过calldata上传至链上实现数据可用性(Data Availableh d [ E A `)或者直接交由链上做验证_ k q O _。这就让这些Rollup( w A v . o解决方案在维护L2的最终性时面临着很大的Gas成本,而这些成本最终都将转嫁到用户的身上,因此那时大部分的L2协议使用成本并没有想象那N K ; l么低。

      与此同时Ethereum也面n I M `临着区块空间竞争的窘境,我们知道每个区块存在] ) * J Q \ Y E一个Gas Limit,这意味着当前区块中的所1 G X 9 1 } B A !有交易的Gas消耗加总不可以超过该值,按当前的Gas LimitT , J 0为30000000来计算,理论上存在30,000,000 / 16 = 1,875,000字节的限制,其中16S + ~指的是EVM处理每个 calldata 字节需要消耗16f i 9 k J单位的Gas,也就意味着单个区块最多可以承载的数据规模约8 d A U \ C为1.79 MB。而L2排序器所产生的Rollup相关数据通常数据规模较大,这就使其与其他主g F v C , K (链用户的交易确认产生竞争,导致单个区块可以打包的交易量变小,进而影响主链的TPS。

      为了解决这个窘境,核心开发者们于2022. 1 V年2月5日提出了EIP-4844提案c ; X E,并在2024年二季度初的Dencun升级后得0 \ 3 [ K B W z x到了实施。该提案提出了一种新的交易类型,名为Blob Tranv Q ? 3 [ qsaction,相比于传统类型的Transaction,Blob Transaction的核心思想I c p m是补充g t H 4 %了一个新的数据类型,即Blob data。区别于calldata类型,blob data不可以被EVM直接,而只i b L H能访问其hash,l \ 7 N 8 i C n也被称为VersionedHash。此外还有两个相伴而来的设计,其一相较于普通交易,blob transaction的GC周期更短,从而保证区块数据不至于过于臃肿,其二blob data的具有原生的Gas机制,总体上呈现的效果于EIP-1559类似,但在数学模型\ H v [ i上选择自然指数函数,使其在应对交易规模波动时稳定性上表现更好,因为自然指数函数的斜率亦为自然指数函数,这意味着无论此时网络交易规模处在什么状; h 8 o态,当交易规模快速飙升时,blob gas的baG m l ? _ : r Use fee反应的更充分,从而@ b L o k ? 0有效遏制交易活跃度,同时该函数还有一个重要的特性,当横坐标为0使,函数c p + ! ` M s 4 )值为1。

      basd @ c ve_fee_per_blob_gas = MIN_BASE_FEE_PER_BLOB_GAS * e**(excess_blob_gas / BLOB_BASE_FEE_UPDATE_FRACTION)

      其中MIN_BASE_FEr A ; eE_PER_BLOB_GAS和BLOB_BASE_FEE_UPDATE_FRACTION为两个常量,而excess_blob_\ k ] M F \gasr T } i * 7 r :则由父区块中总的bL 5 r T H w = , Flob gas消耗于一个TARGET_BLOB_GAS_PER_BLOCK常量之间的差值来决定,当总的blob gas消耗超过目标值,即差值为正时,e**(excess_blob_gas / BLOB_BASE_FEE_UPDATE_FRACTION)P w 1大于1,则base_fee_per_blob_gas变大,反之则变小。

      这样对于一些只希望利用Ethereum的共识能力为某些规模较大的数据做存证以保F x g # X {证可用性的场景就可低成本的执行,同时不会挤占区块的交易打包能力。以Rollup排序器为例,可以通过blob traF k D ] P i t Vnsaction将L2的关键信息封装到blob data中,并在EVM中通过精巧的设计,利用veg C / ? n WrsionedHash实L G ^ ^ i现链上验证的逻辑。

      需要补充的是当前TARGET_BLOB_GAS_PER_BLOCK和@ 9 e : ; I YMAX_BLOB_GAS_PER_BLOCK的设置为主网带来了一个限制,即每个区块的平均处理3 个 blob (0.375 MB) 的目标和最多6个blob (0.75 MB)的限制。这些初始限制旨在最大限度地减少该f h ( m EIP 对网络造成的压力,并且随着网络在较大区块下展y c * e y \ W现出可靠性,预计会在未来~ G c ? \ & O y {的升级中增加。

      详述 EIP-7706 并梳理最新的 Ethereum 的 Gas 机制

      对于执行环y _ V I j境Gas消7 ~ D $ ` } f % O耗模型的再细化——Et A j I + , i ZIP-7706

      在明确了当前Ethereum的G= X N pas模型后,我们来看下EIP-7706提案的目标与实施细节。该提案由VitaliD c 5 h W 2 Bk在2024年5月13日提出。与Blob data类似,该提案对另一个具有特殊性的数据字段对应的Gas模型进行了剥离,这个数据字段即为calldata。并且优化了相应的代码实现逻辑。

      S H | L原理上calldata的base fee计算逻辑与EIP-4844中base fee for blob data相同,均采用了指数函数并根^ c T – a M据父r Z 8 v区块中的实际gas消耗值与目标值的偏差值来计算对当前base fee的缩放比例。h T O f n \ & n }

      详述 EIP-7706 并梳理最新的 Ethereum 的 Gas 机制

      值得注意的是一个新F } N W \ @ # – w的参数设计,LIMIT_TARGET_RA8 L I + _ I s =TIO8 ; ]S=[2,2,4],其中LIMIT_TARGET_RATIOS[0]表示J A . \ Q / q 2了执行操作类Gas的目标比率,LIMIT_TARGET_RATIOS[1]表示Blob data类Gas的目标比率,LIL 6 RMIT_TARGET_RATIOS[2]表示calldata类Gas的目W # _ x i – Y g f标比率,D F Q P M M 8这个向量用于计算父区块中三类gas对应的的gas target值,计算逻辑如下,即分别使用LIMITu } @ R C i_TARGET_RATIOS对gas limit做整除操作:

      详述 EIP-7706 并梳理最新的 Ethereum 的 Gas 机制

      其中gas_limits的设定逻辑如下:

      gas_limits[0]必须遵循现有的调/ U 5 p Z 8 A K +整公式

      gas_limits[1]必须等于MAX_BLOB_GAS_PER_BLOCK

      gas_limitf 9 % n 8s[2]必须等于gas_limits[0] // CALLDATA_GAS_LIMIT_RATIO

      我们知道当前gas_limits[0]为30000000,O ! a $ e J {CALLDATA@ Y +_GAS_LIMIT_RATIO被预设为4,这就意味着当前calldata gas target约为30000000 // 4 // 4 = 1875000,又因为按当前的cw 7 u J #alldata gas计算逻辑,每个_ i ) 6 N非零Bytes消耗16 Gas,零Bytes消耗4 Gas,假设某段ca8 o ; + slldata中非零与零BC N 7 M X _ytes的分布各占50%,则平T T 1 }均处理1 Bytes的calldata需要消耗1n c 6 P o0 Gas。因此当前的calldata gas target应对应187500 bytes的cF r \ R P 4 Ialldata数据,约为当前平均用量的2倍,

      这样做的好处在于大大O @ w } n @ s $减少了cae c a @ R b } Qlldata达到gas limit的情况发生的概率,通过经济模型使calldata的用量保持在一个较为始终的状态,同时也杜绝了对calldata的滥用。之所以做这样的设计还; Q % Y是为L2的发展扫平障碍,搭配blob data,使得排序器成本进一步降低。

    • 189
    • 0
    • 0
    • 8.9k
    • Bb说说而已万蹦蹦Cardis静雨轩加可可碎片吗默默等待凡尘雨江鹤溪胖崽的辣m尼姆盐盐莱卡一个甜筒哇沐曦我是酒窝少女

      请登录之后再进行评论

      登录

      赞助商

      广告位
    • 招募优质内容创作者!

      创作者推荐

    • 漫云科技
    • Forever
      Forever
      元宇宙Pro官方人员
    • 元宇宙Pro小助手
      元宇宙Pro小助手
      官方小助手
    • 元宇宙Pro
      元宇宙Pro
      元宇宙Pro官方
    • 发布
    • 任务
    • 单栏布局 侧栏位置: