把 ZK 友好的哈希装进 EVM:EIP-5988 的 Poseidon 预编译设想 图 1
把 ZK 友好的哈希装进 EVM:EIP-5988 的 Poseidon 预编译设想 · 图 1

ZK Rollup 在链上最贵的动作之一,是验证一串在它自己电路里几乎免费的哈希。Poseidon 就是为这种处境设计的算术哈希:在零知识约束系统里它便宜,在传统虚拟机里它别扭。EIP-5988 在 2022 年 11 月 15 日递交,想把 Poseidon 变成 EVM 的预编译合约,作者名单包括 StarkWare 联合创始人 Eli Ben-Sasson 与 Abdelhamid Bakhta 等人。这份提案今天的状态是 Stagnant,正文里 gas 成本一栏仍然写着 TBD——这个留白本身就是故事。

为什么是算术哈希

以太坊走以 Rollup 为中心的扩容路线,L2 要在 L1 上验证证明,而证明系统的效率高度依赖哈希函数的选择。SHA-256 与 Keccak 对比特运算友好、对域运算不友好——在 ZK 电路里跑一遍 SHA-256 要拆出成千上万道约束。Poseidon 反着来:函数本体是一串素域上的置换,S-box 取幂、MDS 矩阵做线性混合,天然适合 arithmetization,SNARK、STARK、Bulletproofs 等主流证明系统都能低开销消费它。提案动机段因此把话说得很直接:既然靠 Rollup 扩容,L1 就该为它们备好验货台。

把 ZK 友好的哈希装进 EVM:EIP-5988 的 Poseidon 预编译设想 图 2
把 ZK 友好的哈希装进 EVM:EIP-5988 的 Poseidon 预编译设想 · 图 2

一个装得下所有参数的通用接口

各家 Rollup 的 Poseidon 并不互通:StarkNet、Filecoin、Loopring、Polygon 的 Hermez 用的模数、状态宽度、轮数各不相同。EIP-5988 索性不做选择题,把参数本身写进输入编码——32 字节的素域模数 p、2 字节安全强度、1 字节 S-box 幂次、2 字节输入宽度、1 字节状态长度、1 字节全轮数、1 字节部分轮数,之后才轮到待哈希的输入数据。预编译按 Poseidon 论文的规格现算现返回。地址一栏在参数表里只给了一个占位值,文本声称真要分配时可以换成任意低冲突的值。通用性躲开了为某家 L2 定制的站队问题,也躲不开另一个问题:gas 怎么定。

停摆的原因写在正文的 TODO 里

提案的 Rationale 一节整段是 TODO,gas 成本连基准测试都没有填。哈希预编译的定价从来不容易:要按轮次与域运算折算,要防用最便宜参数打最贵请求的拒绝服务攻击,还要和同一地址空间里其他哈希提案竞争。安全论证倒是有备而来——提案引用 Vitalik Buterin 在 EthResearch 论坛的原话,承认 Poseidon 相对 SHA-256 与 Keccak 太年轻、为压低约束数而接受高代数结构的做法尚未久经考验;随后列举 StarkWare、Filecoin、Dusk、Sovrin、Loopring、Polygon 等已在生产中使用的团队,并类比 EIP-4844 对 KZG 信任Setup的处理逻辑:即便出问题,伤害范围也被使用者圈定,不波及整个 L1。参数层安全落在 MDS 矩阵的挑选纪律上,提案附了检测弱矩阵的论文与生成流程。参数通用、安全有引用、需求有名单,唯独没有价格——一份规范文本能替你决定的一切到此为止,共识升级要的是可执行。

快速问答

问:Poseidon 不进 EVM,Rollup 的验证怎么办? 答:预编译省的是链上 gas,不是唯一路径——把哈希开销留在 L2 自己层、L1 只收承诺,同样可行,只是贵。

问:Stagnant 和 Withdrawn 什么区别? 答:前者是长期无活动的搁置,作者没有撤回;后者是主动作废。这类预编译提案在「EVM 该不该继续加预编译」的长期争论里普遍容易搁浅。

问:占位地址是最终值吗? 答:文本自认占位;预编译低位地址一旦分配就难以回收,最终值要等真被接纳时再定。

一条判断线

评估一个哈希预编译提案,按顺序看:需求侧的真实规模与参数分裂程度、通用接口带来的实现复杂度、gas 模型有没有基准数据支撑、地址占用的不可逆性。EIP-5988 在前两项交了卷,卡死在第三项。

常见误区

一是把 Poseidon 当成零知识证明本身,它只是电路里用的哈希函数;二是以为预编译地址随便挑,低位地址空间不可回收,分配即是永久承诺;三是忽略代数结构的双刃——为电路省约束的线性结构,恰是密码分析里攻击面所在。

它与合约生态的接口意义

预编译听起来离用户遥远,实际关系到整个合约生态:如果 EVM 内置 Poseidon,Rollup 桥约与链上验证器就能把一部分验证逻辑写成可组合的标准原语,少一段手写实现、也少一分自研电路的审计负担。这正是当年提案方争取支持的路线之一——预编译不只是省 gas,更是给标准件让路。搁置则意味着这条路线仍由各家在合约层自行绕路,各写各的 Poseidon 实现。

风险提示:本文解释处于搁置状态的协议提案,不构成投资建议;参数与状态以 EIPs 仓库当期原文为准。