V神最新提出的EIP-7706是什么?一文梳理当下Ethereum的Gas机制

V神最新提出的EIP-7706是什么?一文梳理当下Ethereum的Gas机制

1. Vitalik 在 2024 年 5 月 14 日发布了 EIP-7706 提案,提出了对现有 Gas 模型的补充方案,将 calldata 的 gas 计算单独剥离出来,并定制了类似 Blob gas 的 base fee 定价机制,进一步降低 L2 的运行成本。 2. Ethereum 采用了 EIP-1559 和 EIP-4844 两个提案来改进 Gas 模型,EIP-1559 采用 Base fee 和 Priority fee 的双定价模型,EIP-4844 提出了 Blob Transa

标签:V神最新提出的EIP-7706是什么?一文梳理当下Ethereum的Gas机制,Vitalik,EIP-7706,以太坊

1. Vitalik 在 2024 年 5 月 14 日发布了 EIP-7706 提案,提出了对现有 Gas 模型的补充方案,将 calldata 的 gas 计算单独剥离出来,并定制了类似 Blob gas 的 base fee 定价机制,进一步降低 L2 的运行成本。 2. Ethereum 采用了 EIP-1559 和 EIP-4844 两个提案来改进 Gas 模型,EIP-1559 采用 Base fee 和 Priority fee 的双定价模型,EIP-4844 提出了 Blob Transa

内容详情

原文作者:马里奥看 Web3


引言:Vitalik 在 2024 年 5 月 14 日发布了 EIP


当前已支持的 Ethereum Gas 模型——EIP


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


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


· 对用户来说不必要的延迟:由于每个区块有 gas limit 的硬性限制,加上历史交易量的自然波动,交易通常会等待几个区块才能被打包,但这对整体网络来说是低效的;即不存在允许一个区块更大而下一个区块更小的「松弛」机制来满足逐个区块的需求差异。


· 定价效率低下:由于采用简单的拍卖机制导致了公允价格发现的效率较低,这意味着对于用户来说,给出一个合理的定价将是困难的,这也就意味着有非常多情况下,用户付高了手续费。


· 无区块奖励的区块链将不稳定:当取消挖矿带来的区块奖励并采取单纯的手续费模型时,可能会导致很多不稳定,例如激励挖掘窃取交易费用的「姐妹块」,开启更强大的自私挖掘攻击向量等。


直到 EIP



随着时间推进到 2021 年,那时 Rollup 的发展逐渐进入佳境,我们知道无论 OP Rollup 还是 ZK Rollup 都意味着需要将 L2 的数据做压缩处理后的某些证明数据通过 calldata 上传至链上实现数据可用性(Data Available)或者直接交由链上做验证。这就让这些 Rollup 解决方案在维护 L2 的最终性时面临着很大的 Gas 成本,而这些成本最终都将转嫁到用户的身上,因此那时大部分的 L2 协议使用成本并没有想象那么低。


与此同时 Ethereum 也面临着区块空间竞争的窘境,我们知道每个区块存在一个 Gas Limit,这意味着当前区块中的所有交易的 Gas 消耗加总不可以超过该值,按当前的 Gas Limit 为 30000000 来计算,理论上存在 30,000,000 / 16 = 1,875,000 字节的限制,其中 16 指的是 EVM 处理每个 calldata 字节需要消耗 16 单位的 Gas,也就意味着单个区块最多可以承载的数据规模约为 1.79 MB。而 L2 排序器所产生的 Rollup 相关数据通常数据规模较大,这就使其与其他主链用户的交易确认产生竞争,导致单个区块可以打包的交易量变小,进而影响主链的 TPS。


为了解决这个窘境,核心开发者们于 2022 年 2 月 5 日提出了 EIP


base_fee_per_blob_gas = MIN_BASE_FEE_PER_BLOB_GAS *
e**(excess_blob_gas / BLOB_BASE_FEE_UPDATE_FRACTION)


其中 MIN_BASE_FEE_PER_BLOB_GAS 和 BLOB_BASE_FEE_UPDATE_FRACTION 为两个常量,而 excess_blob_gas 则由父区块中总的 blob gas 消耗于一个 TARGET_BLOB_GAS_PER_BLOCK 常量之间的差值来决定,当总的 blob gas 消耗超过目标值,即差值为正时,e**(excess_blob_gas /
BLOB_BASE_FEE_UPDATE_FRACTION) 大于 1,则 base_fee_per_blob_gas 变大,反之则变小。


这样对于一些只希望利用 Ethereum 的共识能力为某些规模较大的数据做存证以保证可用性的场景就可低成本的执行,同时不会挤占区块的交易打包能力。以 Rollup 排序器为例,可以通过 blob transaction 将 L2 的关键信息封装到 blob data 中,并在 EVM 中通过精巧的设计,利用 versionedHash 实现链上验证的逻辑。


需要补充的是当前 TARGET_BLOB_GAS_PER_BLOCK 和 MAX_BLOB_GAS_PER_BLOCK 的设置为主网带来了一个限制,即每个区块的平均处理 3 个 blob (0.375 MB) 的目标和最多 6 个 blob (0.75 MB) 的限制。这些初始限制旨在最大限度地减少该 EIP 对网络造成的压力,并且随着网络在较大区块下展现出可靠性,预计会在未来的升级中增加。



值得注意的是一个新的参数设计,LIMIT_TARGET_RATIOS=[2,2,4],其中 LIMIT_TARGET_RATIOS[0] 表示了执行操作类 Gas 的目标比率,LIMIT_TARGET_RATIOS[1] 表示 Blob data 类 Gas 的目标比率,LIMIT_TARGET_RATIOS[2] 表示 calldata 类 Gas 的目标比率,这个向量用于计算父区块中三类 gas 对应的的 gas target 值,计算逻辑如下,即分别使用 LIMIT_TARGET_RATIOS 对 gas limit 做整除操作:


相关内容


评论加载中..
加载中