预编译地址上的五号租客
地址 0x05 上的 ModExp 预编译提供大数模幂运算,是部分签名体系校验、密码学承诺与老式配对操作常用到的底层积木。它随拜占庭时代的 EIP-198 进入主网,伊斯坦布尔的 EIP-2565 调整过一次定价。之后多年的问题是定价模型与真实开销的错位:乘法复杂度按字平方计、迭代次数与指数的比特长度挂钩——在指数很长、底数与模数较短的参数组合下,客户端的实际计算负担远大于所收的 gas,同一个区块里谁能用模幂塞进最多工作,谁就在用最便宜的价格买最贵的 CPU 时间。
EIP-7883(状态 Final,属于 2025 年 12 月 Fusaka 升级的核心名单)在 2565 的框架上动三处公式。第一处是折扣与门费:总费从”复杂度乘迭代数再除以三、下限二百”改为”复杂度乘迭代数、下限五百”——去掉除以三加上抬下限,常规路径整体约放大到三倍半。第二处对长指数显式加罚:超过三十二字节的部分按每字节十六个迭代计数,再叠加指数末三十二字节的比特长度减一;堆超长指数刷计算量的用法从此按比例付钱。第三处是结果层面的:配对曲线类负载之外,同样输入的价格曲线整体右移,恶意参数的最坏耗时被压进更可预测的包络。

为什么现在动手
提案把动机写得直白:当前定价在某些场景下相对资源消耗被低估,修正它才能让模幂”贵到不再阻碍区块 gas 上限上调”——一个跑满模幂的区块不应该同时是所有客户端最痛苦的区块。对集成者的实用提示:依赖预编译做校验的合约应换用新公式重跑成本模型;对节点运维,这类气费修正的隐性收益是同步稳定性——同样体积的区块在恶意参数下的校验峰值时间下降。
给旧调用重新算一遍账
调价落地后,值得回头把常见负载重算一遍感受一下位移。短参数调用(底数、模数、指数都在三十二字节内)受最小价抬升与去折扣的双重影响,成本明显上台阶;超长指数调用则被逐字节的迭代计数进一步放大。真正受冲击最大的是把模幂当作主力积木的高频合约——它们过去的成本模型建立在一个偏低的单价上,重定价等于给整条产品线换了汇率。相对地,偶尔校验一次的大数运算几乎无感,五百 gas 的门槛费在整笔交易的账单里仍是零头。
从机制设计角度,这次调价还示范了一个少见的干净结构:不改功能、不改接口、不碰输入范围,只换计价函数——三个子函数(乘法复杂度、迭代计数、总费)各自独立可调,未来修正可以继续在系数上做文章而不必再吵一轮硬分叉。同类思路在预编译家族早有先例:每次定价与真实开销出现系统性偏差,社区就重校一次系数。对开发者,把预编译的 gas 公式写进成本模型而不是写死一个经验值,是这类事件教给所有人的习惯;对研究者,留意公式里那个”每八字节一字”的分word计数——字平方复杂度决定了大模数场景的天花板,任何未来提案都会从这里出发讨论。
快速问答
问:哪些调用被加罚最多? 答:指数长度远超三十二字节的调用——超出部分逐字节计十六次迭代;底数与模数超过三十二字节的按字平方复杂度照常计费。
问:它影响 Ether 价格吗? 答:只改单调用的 gas 消耗量,gas 单价仍由市场竞价决定;受影响调用的总账单按公式放大。
问:和 EIP-7823 是什么关系? 答:同一轮工作的两半:7823 给模幂输入尺寸设硬上限,7883 在允许范围内重新定价,一个管边界一个管单价。
风险提示:链上计算成本变动会影响合约经济模型,请在部署前重新核算资源账单;本文不构成投资建议。
发表评论
还没有评论,来说两句吧。
评论区为展示样式,提交不会被处理。