哈希该值多少Gas:EIP-7667给keccak等哈希定价的提案为何停摆 图 1
哈希该值多少Gas:EIP-7667给keccak等哈希定价的提案为何停摆 · 图 1

一块gas在哈希上买到的计算比别处多

EVM 的费用表像一张静态价目清单,而 CPU 的算力结构每隔几年就换一代行情。以太坊历史上多次靠”重定价”校准偏差——2016 年 Tangerine Whistle 给调用类操作码大幅提价堵耗损漏洞,就是最著名的先例。EIP-7667 是这条传统在哈希上的续篇:提案认为 keccak256、SHA-256、RIPEMD 与 BLAKE2 的现行价格让攻击者能用极便宜的 gas 逼节点做远超预算的哈希计算,也把诚实合约的哈希效率压得不成比例。

价目表怎么改

提案文本给出了直白的参数替换:KECCAK_BASE_COST 从 30 提到 300、KECCAK_WORD_COST 从 6 提到 60;SHA256_BASE_COST 从 60 提到 300、SHA256_WORD_COST 从 12 提到 60;BLAKE2_GFROUND 从 1 提到 10;RIPEMD 不动(它本来就贵过新基准)。统一口径是”每次哈希至少 300 gas、每 32 字节词 60 gas,已经更贵的维持原价”。换句话说,一次 keccak 的最低消费从 30 涨到 300,恰好十倍。为什么是十倍而不是逐条实测定价?提案后文的算账透露了思路:与其精算每种哈希的理论比值,不如把各条哈希线统一抬到同一条基准线上,简单且保守。

谁会多付钱,多付多少

提案自己算了最坏场景。大量应用靠 keccak 做二进制默克尔证明:每验证一层要哈希 64 字节(两个词)。calldata 把数据带上链本身按 512 gas 一词收费,新价目下每层哈希再花 300+60×2=420 gas。一条 20 层的证明,验证成本从约 11080 gas 涨到约 18640 gas——增幅不到两倍,摊在整笔交易里有限。真正敏感的是纯哈希密集型合约:哈希链、PoW 验证器、某些 ZK 电路外层,它们的 gas 画像里 calldata 占比低、哈希占比高,十倍价直接重写盈亏线。提案把它当作特性而非缺陷:如果这些应用付不起真实哈希成本,就不该在高峰时段挤占公共区块。

停摆的位置与它的邻居

这条 EIP 的状态是 Stagnant——创建后因无人推进而退出活跃队列,既没被否决也没被采纳。它并非孤例:同一批围绕气体经济的探索里,EIP-7666 想把 0x04 身份预编译搬回 EVM,EIP-7623 给 calldata 设费用下限(后者进入主网路线),说明”按维度重新定价”这个思路有人在别的载体上继续做。提案讨论里还提到过更激进的替代:给哈希单开一条平行 gas 市场(类似 blob 之于 calldata 的做法),但作者认为 EVM 内部子调用无法像交易类型那样声明新维度限额,工程代价太大,才退回到改常数的朴素方案。读这份提案的正确姿势是把它当成一张体检报告:哈希与 gas 的比价是否失衡,取决于你信哪组硬件测量,而提案给了一个可以直接抄的参数答案。

十倍数字从哪来

提案没有附逐条硬件测量表,支撑它的是一组性价比对比:同样一单位 gas 花在哈希上,逼出的真实验证时间明显高于花在签名验证或模运算上。这类”测量先行、常数收尾”的路径以太坊并不陌生——早年的调用类操作码重定价同样是先摆数据再改参数。围绕 7667 的争论也按老线路展开:一派认为哈希就该走多维 gas 市场,单独给哈希开一个像 blob 那样的平行计价轴,常数补丁治标不治本;另一派认为单维 gas 是以太坊最可组合的抽象,子调用、退款上限、区块 gas 上限全建在它上面,为一类操作拆新维度等于重写费用语义。7667 的乐观读法是”一次改参数、管用到下一次硬件换代”;悲观读法是”失衡会随芯片演进复发,常数永远在追赶”。无论站哪边,这张 300 加 60 的价目表都成了讨论哈希估值时最常被引用的具体锚点。

快速问答

问:现在 keccak 多少钱? 答:现行主网仍是基础 30、每词 6,即一次空输入哈希最低 30 gas。该提案没有改变现状。

问:Stagnant 的 EIP 会被执行客户端实现吗? 答:不会。客户端只实现进入升级决议的条目;Stagnant 意味着没有实现路线图,讨论随时可以在新提案里复活。

问:哈希涨价会不会推高所有合约成本? 答:涨的是哈希在 gas 里的占比,普通转账与多数代币操作的哈希开销本来就微小;受影响最大的是循环哈希的算法合约。

风险提示:本文为协议机制与提案文本解读,不构成投资建议;参数与状态以写作时 EIP 仓库文本为准。