Gas 是整数。这个看似无害的事实给以太坊的费用设计设了一道隐形地板:一条指令再便宜,也不能低于1。现实是当时基准测试显示,ADD、MUL 这类计算指令相对于存储读写普遍定价偏高,可它们已经贴着3、5、8这种小数字,想降价也没有多少空间可降。EIP-2045在2019年5月提出换把更细的尺子:引入叫”粒子”(particle)的新最小计费单位,1 Gas 折合一万粒子,便宜指令就能以零点几Gas计价。提案状态是Stagnant,从未激活。
双计数器怎么记账
规格没有推翻 Gas 体系,而是在旁边加了第二个计数器:gasUsed 照旧,新计数器 particlesUsed 只累计那些不足1 Gas 的粒子级收费;每当 particlesUsed 攒满一万,就往 gasUsed 里进位1 Gas、粒子计数归零取余。实现上还有更省事的等价写法——把所有价格与Gas上限统一乘一万,执行结束时向上取整换算回来。提案顺带提过比例用2的幂(比如8192或16384)可能比整万更好算,但把定稿权留给了后续讨论。给出的调价样例相当激进:DUP、SWAP 从3 Gas 降到0.3,ADD、SUB 从3降到0.6,MUL 从5降到0.5。
为什么不直接涨区块Gas上限
想让更多交易挤进区块,路数无非两条:抬上限,或者降单价。抬上限的麻烦在于状态增长同步变快——除非同时把 SSTORE、CREATE 这类撑大状态的指令涨价,而那会动摇已有合约的经济假设。粒子计价的卖点是只做外科手术:单独把计算指令的单价往下拨,区块Gas上限、交易Gas上限、用户看到的账单单位统统不变。提案反复强调粒子不该暴露给普通用户,它最多是客户端实现和极致优化合约作者之间的内部方言。
停在2019年的原因
整数 gas 牵一发动全身:所有测试向量、Gas 估算器、钱包的估算逻辑、第二层的费用继承,全都默认 gas 是自然数。为一个”计算指令更便宜”的收益去换整套账本换精度单位,在当时的优先级表上排不进硬分叉。另外,EIP-2045 的”粒子”一词其实借自早先给Ewasm设计Gas方案的提案,两者并无实施关系,这个同名也一度造成理解混乱。此后社区给计算降价走的是别的路线——升级CPU级的客户端实现,而不是重新定义货币单位。
快速问答
问: particles 会出现在我的账单上吗? 答:不会。提案明确要求用户界面与区块结构不变,粒子只是客户端内部的记账精度。 问:整数Gas在今天还是硬约束吗? 答:协议层的 gas 仍是整数;一些 Layer2 与仿真工具在内部估算时用浮点或放大整数,与共识无关。 问:EIP-2045 和 EIP-2035 什么关系? 答:2035想给状态证明定价、顺带解释为什么不能简单涨价存储指令,2045引用它作为”另一半方案暂缓”的理由。
一分钱的哲学
费用单位的最小刻度,看似工程问题,实为定价权问题。只要最小单位是1Gas,任何”这条指令值半Gas”的判断都无处安放——你只能把它定成1,然后接受它被系统性高估。粒子计价的本质是把定价的分辨率调细一档,让社区可以对”计算指令到底值多少”给出更接近实测的回答。反对者的顾虑同样成立:货币单位细分会制造两套账本的换算摩擦,历史上法币体系里辅币与主币的换算事故比比皆是;EVM账本哪怕只在一个客户端实现里算错取整方向,就是全网分叉级事故。所以这份提案即使复活,也大概率先把”粒子不得改变任何用户可见数值”写进铁律。读懂2045,等于读懂一切”加一个更小的单位”型提案的共同命运:想法朴素,工程保守,落地要等一个算力真的便宜到计费单位碍事的时代。
风险提示:本文为协议历史提案科普,不构成投资建议;Gas参数一切以官方网络升级文档为准。
发表评论
还没有评论,来说两句吧。
评论区为展示样式,提交不会被处理。