一次调用验多个点:EIP-8149的批量KZG证明预编译
KZG承诺验证的算术里藏着一个批量红利:验证一个点开路的配对等式,和验证同一条承诺下几十个点开路的联合等式,成本差距远没有几十倍——多出来的点大多只需在同一个配对检查里多累加几项。EIP-4844设计的0x0a预编译却把红利锁在门外:一次调用只能验一个点,合约想校验同一条blob上十个位置的声明,就得跑十次调用、付十次基础费用、让客户端做十次配对准备。EIP-8149(2026年2月6日创建,提案文本状态为Draft)提议补上这个缺口:新增一个多KZG点评证预编译,一次调用对同一条blob承诺至多验证一百二十八个求值点。
输入结构与计费
提案给出的输入是紧凑的二进制拼接:版本化哈希三十二字节、承诺四十八字节、求值点数量n占四字节大端,其后是n组(z,y)对,每组六十四字节,最后一组四十八字节的证明。总长等于一百三十二字节加上n乘六十四。所有z与y必须严格小于BLS模数,否则整体失败。输出与现行点证明预编译完全一致:成功时返回六十四字节——每blob字段元素数与BLS模数两个常数的大端编码,供调用合约继续执行后续断言。Gas公式是基础费加每点单价乘以n,两个常数在提案里标注为待定,可确定的是设计意图:单价远低于现行单次五万Gas,让批量规模越大、每点摊销越便宜。上限一百二十八这个数字来自工程直觉——足够覆盖PeerDAS一个时隙内数据列采样的验证需求,又不至于让单次调用的证明尺寸失控。
数学上为什么敢批量
KZG多点开路的标准做法值得直觉描述:给每个点的声明按一个随机挑战数赋权,把所有单点等式捏成一个多项式恒等式,配对检查从n次压到常数次。安全性靠随机 Oracle 归约保证, Fiat-Shamir式变换把挑战数绑进证明,证明方无法挑一个对自己有利的组合。密码学界对多点开路的归约有多篇分析,损失项随点数的增长是可控的——这是提案把批量上限画在一百二十八而非无限的原因之一:点数越多,归约损失越厚,虽然仍是多项式级别,但安全参数需要重新计算。实现层面,批量证明把n次曲线配对准备摊销成一次,客户端的墙钟耗时近似常数加线性小项,客户端之间的性能差异也随批量收敛。
谁会用它
最直接的用户是L2桥接与验证合约:Rollup状态根验证经常要在同一条blob里读多个位置(批次头、长度字段、状态承诺),批量预编译让这类合约的验证Gas接近下限。第二类是数据可用性相关合约:把多个列承诺的检查合进一次调用。第三类是跨链桥:轻客户端脚本逐字段验证提交数据时,字段声明天然是同承诺多点位。反过来,对只验单点的场景(典型是简单的blob存在性检查),批量预编译没有增益也不该用——多写几行代码,还白付一个基础费。与EIP-8096(提议给单点预编译提价)对照阅读更有趣:一个把单笔费用上调,一个提供批发通道,两者拼在一起才是执行层配对定价的完整版图:零售价格抬高、批发价格按点数摊销,让验证密度回到可控区间。
快速问答
问:批量证明会不会让拒绝服务变容易? 答:方向相反:固定开销被摊薄后,完成同等验证工作的总Gas更低,攻击者买同等破坏力的成本更高。需要管理的是单次调用的输入尺寸与最坏路径耗时,上限一百二十八就是干这个的。
问:与PeerDAS有关系吗? 答:PeerDAS把blob组织成列并以单元格承诺做采样,列级验证的诉求会进一步放大批量验点需求,提案在PeerDAS后的时点出现并非偶然。
问:现在有等价替代吗? 答:链下证明加链上聚合可以绕过,但那引入了证明者信任或递归证明成本;预编译路线的价值是让执行层合约直接、无中介地获得批量验证。
一条算术直觉
把单次配对准备想象成开炉子的预热费:无论烤一块面包还是六十块,炉子都要烧到同一温度。现行预编译按块收费且每块都另收预热费;批量预编译把预热费收一次,之后按块计料钱。定价争议从来只在一个点上:料钱该定多少——足够便宜让诚实验证走批发,又足够贵让滥用者买不起炉子。看懂这个结构,任何预编译提案你都可以直接问两个问题:固定成本摊给谁,变动成本锚在什么硬件基准上。
风险提示:本文仅解释协议提案机制,不构成任何投资建议。EIP状态以官方仓库为准,提案不等于主网激活。
发表评论
还没有评论,来说两句吧。
评论区为展示样式,提交不会被处理。