通行密钥终于能在链上便宜验签:EIP-7951 与 secp256r1 预编译 图 1
通行密钥终于能在链上便宜验签:EIP-7951 与 secp256r1 预编译 · 图 1

硬件里那把锁,链上一直读不懂

今天大多数手机的指纹与面容解锁、大多数安全密钥,走的是一套叫通行密钥的认证体系,底层椭圆曲线大多是 secp256r1,也常被写作 P-256 或 prime256v1。苹果的 Secure Enclave、安卓的 Keystore、FIDO2 认证器,生成的签名都落在这条曲线上。问题来了:以太坊主网此前内置的签名验证能力,只覆盖 secp256k1——比特币与以太坊传统上选的那条曲线,和手机硬件用的不是同一条。

这意味着钱包如果想让合约账户接受通行密钥签名,只能用通用操作码现场模拟整条曲线的验算,Gas 成本高到日常不可用。

通行密钥终于能在链上便宜验签:EIP-7951 与 secp256r1 预编译 图 2
通行密钥终于能在链上便宜验签:EIP-7951 与 secp256r1 预编译 · 图 2

过渡方案 RIP-7212 与它的坑

在升级落地前,各 Layer2 网络先动了手:一种以 RIP-7212 为名的预编译在多条 L2 上部署,提供 secp256r1 验签接口,成本降到了可用区间。但这段过渡史本身带着一课:EIP 正文明确指出,RIP-7212 的早期实现被发现存在一类关键安全问题——验签时对个别退化情况的处理不够严格,会给伪造留下窗口,接口随后的校验因此收紧。

EIP-7951 的角色是转正加修复:在主网加入同样接口的预编译,并在规范层面补齐这些安全检查。它自己也承认这段渊源——EIP 原文写明以兼容 RIP-7212 既有接口的形式取代旧方案:同一套接口签名,去掉了那处漏洞,用过的工具链换个网络配置就能迁移。这条 EIP 随 Fusaka 升级在 2025 年 12 月 3 日主网激活,状态为 Final。

对钱包与账户意味着什么

最直接的变化是合约账户可以把通行密钥当成一种签名来源。安全产品叙事里的体验由此成立:钱包恢复不再只有助记词一条路,设备本身的生物识别可以承担一部分守门职责;多设备相互备份也顺理成章。技术上要划清边界:通行密钥签名验证便宜了,不等于链上账户自动继承了硬件的安全属性——密钥生成在设备里,账户策略在合约里,两层各有各的风险面;通行密钥跨链与跨账户的重放隔离、设备丢失后的恢复流程设计,仍是钱包工程问题,不因预编译存在而自动解决。

对开发者还有接口层面的细节:预编译的输入输出格式与既有 L2 方案对齐,跨网络部署的智能合约钱包可以写一套验签逻辑,靠链配置切换。验证失败的返回值、gas 计费方式这类细节,以当期 EIP 规范与客户端实现说明为准。

快速问答

问:这是否意味着以太坊换掉了 secp256k1? 答:不是。外部账户的传统签名体系不变,这个预编译只是给合约额外提供一种曲线的验签能力。

问:我手机上的 Face ID 从此能直接给交易签名? 答:方向正确但有前提:需要钱包把通行密钥接入账户的授权策略,且这类流程的设计成熟度因产品而异。

问:主网有了预编译,L2 的方案会作废吗? 答:接口保持兼容,已有部署可继续用;长期看会向统一实现收敛。

为什么是预编译而不是合约

一个自然的问题:既然 EVM 足够通用,为什么不写一个验证 P-256 的合约,而要走漫长的协议升级加一条预编译?答案是成本结构。椭圆曲线验签包含大量域运算,用字节码逐段模拟,一次验证的 Gas 会高到只在极少数场景可接受;预编译是客户端原生实现的入口,同样的数学在优化过的库里跑,成本直接降一到两个数量级。预编译的历史角色就是给密码学原语开后门快车道,从哈希到 alt_bn128 配对都是先例。代价则是另一面:预编译的逻辑写进每一款客户端,审计与一致性成本由全网承担,这也是 RIP-7212 的教训为何被反复引用的原因——快车道上的实现缺陷,会同步放大成所有使用它的协议的风险。

常见误区

一是把预编译读成钱包功能本身,它只是让一类验签从昂贵变便宜,产品价值要钱包层去兑现。二是把曲线兼容读成安全等价,两条曲线的数学性质、实现审查都要各自过关,当年 RIP-7212 的缺陷正是教训。三是把通行密钥当成不可丢失的钥匙,设备、生物特征与账户映射关系都可能在现实里断裂,恢复设计依然不可省略。

风险提示:本文为技术机制科普,不构成投资建议;密钥管理与账户设计涉及资产安全,请以具体钱包产品的文档与安全公告为准。