一条指令算完一条曲线:EIP-1829 想给以太坊装上通用椭圆曲线算盘 图 1
一条指令算完一条曲线:EIP-1829 想给以太坊装上通用椭圆曲线算盘 · 图 1

两条曲线之外,全是苦力

以太坊的签名验证体系建在两块基石上:ecrecover 预编译处理 secp256k1,也就是今天绝大多数钱包地址背后的那条曲线,它的内部工作方式本栏目在 链上的验签车间:ecrecover 预编译怎么从签名倒推公钥 里拆开过;alt_bn128 曲线由 EIP-196、EIP-197 一族预编译支持,服务zk 证明验证。除此之外呢?比特币用的曲线、各家新链自选的曲线、零知识证明领域不断冒出的新曲线,虚拟机一概不认识。合约想验证非原生曲线的签名,只能在 EVM 里逐行手搓曲线运算,几十 KB 的字节码、数万以上 Gas 是常态。2019 年 3 月 6 日,Remco Bloemen 提交 EIP-1829,思路不是再为某条曲线补一个专用预编译,而是一步到位:给一条通用指令,曲线方程当场随参数传入,算什么曲线由调用者说了算。按仓库原文核验时,该提案处于 Stagnant。

一条指令算完一条曲线:EIP-1829 想给以太坊装上通用椭圆曲线算盘 图 2
一条指令算完一条曲线:EIP-1829 想给以太坊装上通用椭圆曲线算盘 · 图 2

接口:一次算完一整条线性组合

预编译的名字按原文叫 ecmul,输入先给曲线三参数 malphabeta,定义方程 y² = x³ + alpha·x + beta(对 m 取模),随后给若干组「标量乘点」,输出一站式的线性组合结果,也就是 s₀·A₀ + s₁·A₁ + … 加总到 sₙ·Aₙ。这条算式在文献里同时叫内积、多倍乘、多指数运算——同一个数学对象在不同领域的名字。点全部按压缩坐标传:给 x 坐标和一个符号字节,0x02 表示取偶数 y、0x03 取奇数 y、0x00 是无穷远点,y' = 0x02 | (y & 0x01) 的转换按 SEC 1 v1.9 第 2.3.4 节,但不支持非压缩点的 0x04 前缀。压缩坐标不只是省字节:任何点只要按这个格式进来,要么能解出曲线上的对应点、要么当场暴露不在曲线上,把「先验证点在曲线上」这一步直接吃进了编码格式。

为什么是线性组合而不是单次乘法

原文的 Rationale 讲透了取舍。若只提供单点乘 C = r·A,那么还得再补一条加法指令,而线性组合形式天然可以吃 Shamir 技巧这类批量优化的红利,单次乘法版本拿不到。最有说服力的例子是 ECDSA 本身:验签的核心运算恰好就是两项式 s₀·A₀ + s₁·A₁,一条指令即可完成,没有中间结果落盘的开销。作者还点出一个尴尬现状:EIP-196 的 BN254 预编译只支持单点乘,导致链上验证多个点时,实测在 EVM 里手算(Aztec 团队的 Weierstrudel 实现)反而比调预编译更便宜——专用预编译只覆盖一种形状,通用线性组合则把整族运算都摊平。Gas 模型顺着这个哲学设计:一个 BASE_GAS 起步,标量为 1 的点收 ADD_GAS,标量大于 1 的点收 MUL_GAS,标量为 0 完全免费。有个原文自曝的怪味道:按这套计费,2·A₀(直接收一份 MUL 费)与 A₀+A₀(收两份 ADD 费)谁贵说不准,所以作者加注「倍增有时反而比自加更贵」。

边界与没做完的部分

通用性总有代价,原文圈定了适用范围:只覆盖大特征素域,二元域和非素特征域不管;模数须在 2 的 256 次方以内,好让所有参数装进一个 EVM 字;奇异曲线(4α³+27β² 为零)与小于模数的非法域元素等边缘情况列成清单但明确标注「欢迎补充」,言下之意是当年连边界语义都还没收敛。Gas 常数的三个点全部留白。Rationale 还讨论了要不要为 α 等于 -3、-1、0 这类有快速公式的曲线形状给折扣,同样是 TODO。最特异的彩蛋是「模平方根」:把 α、s₀、A 全设成 0,输出满足 Cy² = β,一条曲线运算指令顺手当了求模平方根的计算器——提案甚至不假装自己只想做验签。

普通用户该从里面读出什么

把这条提案翻成钱包常识有三层。第一,不同链的「签名」在密码学层面不天然互通:以太坊预编译认识的东西,别的链可能要在合约层重实现,反之以太坊验证别的体系签名时开销大、实现易错,跨链桥与多链钱包的安全事故里有相当一部分栽在曲线适配层。第二,「预编译」不等于「便宜」——1829 引用的 Weierstrudel 实战就是反例,评估跨链验签成本时以实测为准,别被「原生支持」三个字误导。第三,凡是把密码学边界留作 TODO 的通用工具,落地前都需要大量审计补洞;这也是通用曲线方案停了这么多年仍停在 Stagnant 的现实写照。

风险提示

本文涉及的提案状态与规格按 EIPs 官方仓库原文核验,该提案未激活,参数未定,请以仓库当前内容为准。理解验签成本与曲线兼容性有助于评估跨链风险,但不构成投资建议;涉及跨链资产操作请选择经过审计的渠道。