ARTICLE DETAIL

资讯详情

深耕编程入门与网站建设的一线实战洞察。

EIPs 仓库 EIP-8059 深度解析:以 REBASE_FACTOR 实现 Gas Units Rebase 高精度计量

EIPs 仓库 EIP-8059 深度解析:以 REBASE_FACTOR 实现 Gas Units Rebase 高精度计量 EIPs 仓库 EIP-8059 深度解析以 REBASE_FACTOR 实现 Gas Units Rebase 高精度计量【免费下载链接】EIPsThe Ethereum Improvement Proposal repository项目地址: https://gitcode.com/GitHub_Trending/ei/EIPsEIP-8059Gas Units Rebase for High-precision Metering是一份 Standards Track / Core 类型的以太坊改进提案提出将以太坊的 Gas 单位整体放大REBASE_FACTOR1000倍在不引入分数 Gas、不大改 EVM 内部逻辑的前提下消除重定价过程中的舍入误差并为未来硬件性能提升与状态访问成本走高预留空间。本文以 EIPS/eip-8059.md 为骨架结合仓库中 EIP-7904 的经验分析、EIP-8037 与 EIP-8038 的状态侧重定价提案以及 EIP-8007 对 Glamsterdam Gas 重定价工作的整体编排系统讲解该提案的动机、规格、论证与影响帮助你理解 Gas 计量精度问题以及 rebase 方案与 milli-gas 方案EIP-8053的路线差异。一、提案背景计算操作与状态操作的成本失衡EIP-8059 的出发点与 EIP-8053Milli-gas for High-precision Gas Metering完全一致当前 EVM 中绝大多数纯计算操作ADD、SUB、MUL等相对于状态操作SSTORE、SLOAD、CREATE等被显著低估。造成这一错配的原因有两个计算侧变快客户端优化与硬件性能提升使纯计算操作的实际执行成本持续下降状态侧变慢以太坊状态规模不断增长触及更大状态的 I/O 操作性能持续恶化。且这两条趋势预计都会延续导致错配进一步加剧。围绕如何修复这一错配仓库中已存在多条提案降低计算操作成本的经验分析见 EIP-7904提高状态操作成本的有 EIP-8032、EIP-8037 与 EIP-8038。其中 EIP-8037 通过引入CPSBcost per state byte1530 gas/字节统一并提升状态创建成本并独立计量 state-gasEIP-8038 则提高COLD_ACCOUNT_ACCESS、引入ACCOUNT_WRITE、STORAGE_WRITE等访问/写入分量。但无论选择哪一侧作为重定价的锚点都绕不开下述本质权衡。二、核心权衡锚定速率与舍入误差EIP-8059 用锚点anchor来描述重定价的基准如果让计算操作变便宜就会引入舍入误差——大多数计算操作被定价为 1 gas而它们的真实成本本应是 1 的几分之一。这类误差直接损害可扩展性因为每个区块能容纳的这些廉价操作数量会因此减少。反过来如果把最快的操作码定价为 1 gas则其他所有操作包括计算与状态操作都必须大幅涨价在当前区块上限下会严重压低吞吐量。由于计算操作只影响区块执行时间所选锚点会给所有计算操作码带来一个特定的每百万 gas 每秒Mgas/s速率。以EcRecover为例若保持其当前价格 3000 gas 作为锚点根据 EIP-7904 的经验分析报告 对该操作码执行时间的估算会得到一个约 175 Mgas/s 的速率。下图展示了基于 EIP-7904 同一套执行时间估算、在不同锚点下计算操作的平均舍入误差图不同锚定速率Mgas/s下计算操作的平均舍入误差来源 EIP-8059从图中可以看到明显的下降趋势锚定速率越高平均舍入误差越低。具体而言若采用 50 Mgas/s 的锚点在 2 秒区块执行时间上限的假设下对应 100 Mgas 的区块 Gas 上限平均舍入误差高达59.3%——也就是说如果不需要取整到整数 Gas 单位每个操作码平均可以再便宜 59.3%。只有在锚点达到约 400 Mgas/s 之后误差才降到可接受的低水平。问题在于在不引入分数 Gas 的前提下达到 400 Mgas/s 级别的锚点意味着必须对 Gas 模型进行一次大规模 rebase——所有操作码显著变贵交易级与区块级 Gas 上限同比例放大。这正是 EIP-8059 要解决的核心矛盾。三、规格REBASE_FACTOR 与统一放大EIP-8059 的规格非常简洁核心参数只有一个ParameterValueREBASE_FACTOR1000提案规定所有与 Gas 相关的参数和变量都按REBASE_FACTOR1000 倍放大具体包括各操作码与预编译的 Gas 成本如ADD、SUB、MUL等计算操作以及SSTORE、SLOAD、CREATE等状态操作交易级 Gas 上限tx.gasLimit与区块级 Gas 上限block.gasLimit区块头中的gasUsed字段及随之而来的各项记账变量。此外在分叉边界处calculate_base_fee_per_gas需要同步更新使parent_gas_used与parent_base_fee_per_gas两个输入也按REBASE_FACTOR缩放从而保证 EIP-1559 基础费用更新规则在新单位体系下依然自洽# 分叉后 base fee 计算的输入需要被缩放 parent_gas_used parent_gas_used * REBASE_FACTOR parent_base_fee_per_gas parent_base_fee_per_gas * REBASE_FACTOR从实现角度看这是一次纯单位换算式的改动EVM 内部关于 Gas 的全部逻辑扣除、检查、退款、上限校验在结构上保持不变只是所有数值同时放大 1000 倍因此不会对 EVM 的内部逻辑造成重大改动。这也正是该提案的定位——在 EIP-8007Glamsterdam Gas Repricings Meta EIP中被归类为Supporting支撑型提案其描述为Gas parameters and variables are increased to a factor ofREBASE_FACTORto reduce rounding errors without major changes to the EVM。四、为何选择 1000精度与可推理性EIP-8059 的 Rationale 从两个角度论证了 rebase 因子选 1000 的合理性1. 彻底消除当前与未来的舍入误差。从动机部分的分析可知400 Mgas/s 的锚点已足以把误差降到合理水平。在 2 秒区块执行时间假设下这对应 800M 区块 Gas 上限即相对当前 36M 区块上限约22 倍的提升。REBASE_FACTOR 1000足以覆盖这一量级既解决当下计算操作的取整误差也为未来硬件进一步提升后的重定价预留了精度空间。2. 让新 Gas 单位更易推理。rebase 之后单位换算变得非常直观区块上限与目标从百万单位如 36M、60M变为十亿单位如 36B、60BGas 成本从单位如 1、5、8变为千单位如 1000、5000、8000。这使开发者在阅读 gas 表、估算交易成本时能获得更简洁的数值直觉同时ADD这类廉价操作在放大后也拥有了 1000 的整数成本与其它操作之间的比例关系一目了然。值得对照的是同仓库中的替代方案 EIP-8053它不放大任何现有参数而是引入milli_gas_left作为 EVM 内部计量单位所有 Gas 成本以milli_gas定义交易结束再向上取整回gas。两者的动机完全相同避免放大 100 倍带来的 UX 冲击 vs. 避免分数 Gas 的复杂性但路线相反EIP-8053 在 EVM 内部引入新计数器即分数 Gas的内部化EIP-8059 则通过统一 rebase 保持整数 Gas 语义。两份提案当前均为 Draft 状态并在 EIP-8007 的清单中同被列为 Declined for Inclusion截至该 Meta EIP 撰写时说明该问题在 Glamsterdam 工作范围内的取舍仍在演进。五、向后兼容性EIP-8059 是一次向后不兼容的 Gas 重定价必须通过一次计划内的网络升级scheduled network upgrade激活。影响面体现在所有依赖具体 Gas 数值的链上/链下工具gas 估算器、钱包、区块浏览器需要适配新单位体系已部署合约中以硬编码 Gas 数值如gasleft()阈值、固定tx.gasLimit编写的逻辑其行为会在分叉后发生变化由于所有数值统一放大同一因子操作之间的相对价格保持不变这与 EIP-8037、EIP-8038 那种只调整部分参数的重定价相比兼容性冲击集中在单位而非相对比例上。六、安全考量EIP-8059 明确指出两方面的安全与工程影响需要进一步分析应用可用性配合状态操作成本的整体上调如 EIP-8037、EIP-8038 所提议的提高状态访问成本可能影响某些 dApp 与用户行为的可用性需要更多针对各类 dApp 的影响分析。区块头 RLP 尺寸gasLimit与gasUsed数值的增大会使区块头的 RLP 编码长度增加约2 字节。虽然单次增加有限但需要在更广的带宽影响评估中予以确认。此外需要注意的是rebase 本身只是放大了计量单位它并不改变任何单一操作的相对定价因此上述风险更多来自同一分叉中并行的重定价提案EIP-8037 的 state-gas 维度、EIP-8038 的状态访问成本等与 rebase 叠加后的综合效果。七、总结与阅读建议EIP-8059 以极简的规格一个REBASE_FACTOR 1000回应了一个深层问题在 EVM 保持整数 Gas 语义的前提下如何在不引入分数 Gas 的情况下获得高精度计量。它的价值在于让廉价计算操作与昂贵状态操作之间的鸿沟不再被取整误差放大并为未来硬件提升后的重定价预留空间。若希望深入该主题的完整脉络建议按以下顺序阅读仓库内资料EIPS/eip-7904.md计算操作运行时的经验分析Informational及其 gas-cost-estimator-report.pdf 与assets/eip-7904/analysis/目录下的完整估算数据是 EIP-8059 误差分析的数值基础EIPS/eip-8037.md 与 EIPS/eip-8038.md状态创建与状态访问成本的重定价方案构成状态侧涨价的配套路径EIPS/eip-8053.mdmilli-gas 内部计数方案与 EIP-8059 形成路线对照EIPS/eip-8007.mdGlamsterdam Gas 重定价的 Meta EIP可查看各提案的归类与入选状态。EIP-8059 当前状态为Draft其中的参数如REBASE_FACTOR的最终取值与配套提案的交互方式仍可能在后续修订中调整阅读时请以仓库内最新版本为准。【免费下载链接】EIPsThe Ethereum Improvement Proposal repository项目地址: https://gitcode.com/GitHub_Trending/ei/EIPs创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表