预编译的点名册里少一张万能牌
EVM 在零地址之后的低位地址段预装了一批密码学车间:哈希、验签、椭圆曲线运算由客户端原生实现,Gas 价目表里明码标价。问题是这些车间都是定制造型:alt_bn128 那组操作码只为一条曲线而设,换一条曲线就要再立一条 EIP、再加一个地址。当第二套签名体系带着验证需求进场时,路线争议随之而来——是一条曲线一座车间,还是一张说明书写清参数、一座车间通吃?
EIP-1962 在 2019 年 4 月给出的答案是后者。设想中的预编译接受一段运行时传入的曲线描述,把域上的加乘、配对的 Miller 循环与最终指数化都参数化:调用方递上域特征、曲线系数、生成元等一串参数,预编译即席开工,覆盖一切韦尔施特拉普形式的曲线,域大小理论上不设限。提案把它定位为隐私与扩容方案的公共地基——当时多套新曲线方案同时在设计里,谁都不想等一条 EIP 的排期。
为什么贵得没法用
这个设计在密码学家那里挨的批评集中在账单上。固定曲线的预编译可以针对曲线做极致优化——专门的域算术、汇编级的常数次实现、为验证调优的配对结构;通用预编译拿到参数串只能跑通用算法,每笔运算都带着解释器的原罪。更难受的是 Gas 定价:成本随传入曲线剧烈浮动,价目表只能按最坏情况标,于是日常调用替罕见的超大曲线需求买单。审查负担同样翻倍:任意曲线意味着边界案例、侧信道承诺、拒绝服务的参数面全都无从写死,客户端团队要为一座永不停业的定制车间负责。
定点路线赢了,但赢得不彻底
后续历史选了另一条路:给最重要的曲线逐条立项。为 BLS12-381 增设曲线运算预编译的 EIP-2537 早已定稿,走的是固定曲线、结构清晰的车间老路;哈希到曲线的配套需求则由另一支提案补位——那支为 BN256 曲线补哈希到曲线预编译、让任意消息的 BLS 验签变得可负担的早期尝试 EIP-3068,停留在停滞状态。EIP-1962 本体现在挂着的标签是 Stagnant:不撤回、不推进,作者保留了问题,社区保留了怀疑。
值得玩味的是这场争论的遗产。它把预编译设计写成了一个可迁移的问题框架:灵活性交给运行时,效率就交给最坏情况;效率交给固定实现,创新就交给硬分叉排期。今天每有新曲线需求进场,讨论稿里仍能看到这条轴的两端来回摆——只是摆锤至今没再荡到通用预编译那一侧。
一条读法
判断一条 EIP 值不值得跟进,除了看它解决谁的痛点,还可以看它的反面被谁付账。通用预编译把创新成本从协议开发者转给每一次运行它的节点和用户,最坏情况定价由所有调用者分摊——这解释了为什么路线图一次次选择反方向:把新曲线写死进硬分叉,等于让每类需求单独排队,排队痛苦由提出方独担,系统整体账单反而可控。
快速问答
问:EIP-1962 和 EIP-3068 都停滞,说明以太坊拒绝新曲线吗? 答:不。拒绝的是运行时定义路线,定点预编译路线仍在成批落地,新曲线以一条 EIP 一座车间的方式进场。
问:合约今天想用陌生曲线怎么办? 答:用 EVM 原语软实现,接受高 Gas 成本;或把验证需求改写成已支持曲线的证明系统。
一条直觉线
通用机床能车任何零件,但流水线上真正跑量的是专用模具。EIP-1962 造的是机床,主网选的是模具阵列——直到哪天更换零件的频率高过开模成本,机床的价值才会被重新算账。
风险提示:本文介绍密码学提案史,不构成投资建议;链上密码方案选型请以当前官方预编译清单为准。
发表评论
还没有评论,来说两句吧。
评论区为展示样式,提交不会被处理。