666字节的抗量子签名:EIP-8052想把Falcon装进EVM预编译 图 1
666字节的抗量子签名:EIP-8052想把Falcon装进EVM预编译 · 图 1

为什么要往EVM里塞一种新签名

椭圆曲线签名(ECDSA、 schnorr 那一族)有个共同软肋:一旦足够大的量子计算机出现,离散对数问题可被快速破解,今天的公钥体系理论上会被整体掀翻。格密码是目前公认的替换候选,Falcon 是其中一种基于 NTRU 格的方案,已被美国国家标准与技术研究院(NIST)的后量子签名标准流程选中,签名紧凑、验证高效。EIP-8052(2025年10月起草,草案状态,依赖 EIP-7932 建立的抗量子预编译注册表框架)要把 Falcon-512 的验证装进 EVM 预编译,让任何 EVM 链(尤其是 Layer 2)可以直接验这类签名。注意别和同名稳定币项目混淆,本文说的是签名算法本身。

一次验证拆成三个预编译

Falcon 验证的大致流程是:把消息哈希映射到格上的一个点,再用格上的多项式运算检查签名方程是否成立。提案把这一步拆成两类子过程、共三个预编译。第一类是哈希到点,有两个变体:FALCON_HASH_TO_POINT_SHAKE256 严格照搬 NIST 提交文档用 SHAKE256 做扩展输出函数;FALCON_HASH_TO_POINT_KECCAKPRNG 改用 Keccak 派生的伪随机数发生器——EVM 里 Keccak256 本来就是原生预编译,这条路在链上便宜得多,代价是偏离 NIST 规范。第二类是 FALCON_CORE,做真正费力的格运算。这样拆分的收益是双份:一套完全合规、一套便宜好用,而且哈希部分被隔离之后,未来给 Falcon 验证写零知识电路也多了抓手。

3000 gas 是怎么凑出来的

定价直接写进了规格:两个哈希到点预编译各 1000 gas,FALCON_CORE 2000 gas,完整验一次签名的总账单约 3000 gas。哈希部分的估算依据是平均约 35 次哈希调用,按 Keccak 单价线性折算;核心部分的主开销是两次数论变换加一次逆变换,其中公钥的一次变换可以预计算,实跑只剩一变一逆,估到 2000。对比之下,一次 secp256k1 的 ecrecover 是 3000 gas,同量级;而 Falcon-512 签名字节数 666,比 ECDSA 的约 65 字节胖了一个数量级——验签算力不是瓶颈,把这么大签名塞进 calldata 的数据费才是调用方真正要掂量的部分。

出错时的规则也照搬预编译惯例:签名组件校验不通过,本次调用供给的全部 gas 一律烧掉,不做部分退还,避免调用方用便宜价格反复试探畸形输入。

一条量级直觉

把三种签名放在同一杆秤上:ECDSA 签名短、验算便宜,但量子来袭即刻报废;有的抗量子方案签名达到几十千字节,链上携带的数据费直接劝退;Falcon 走中间路线,666 字节的签名加约 3000 gas 的验算,用可接受的胖度换标准化抗量子身份。666 字节折算 calldata,按每非零字节十六 gas 计,光数据就要一万上下 gas,验签费反而成了小头,这是所有链上抗量子签名共同的结构性尴尬:省算力省不出数据费。

一格签名的重量感

把三套体系摆在同一条传送带上称:ECDSA 签名约 65 字节、验算 3000 gas,是今天的默认;某主流抗量子方案签名以十千字节计,光数据费就把链上验签挤出实用区;Falcon-512 落在 666 字节与 3000 gas,恰好卡在能塞进普通交易还不至于肉疼的窗口。这个窗口不是天上掉的:格方案的经典权衡是签名尺寸与密钥尺寸互换,Falcon 用相对复杂的密钥生成换来了格家族里最小的签名之一,才让预编译账单看起来像笔正常开销。也正因为窗口窄,提案才把验算部分单独标价——数据费已经够重,链不能在这头再收第二次钱。

快速问答

问:这会让以太坊地址换成抗量子地址吗?不会,本提案只提供验证能力,密钥体系迁移是另一条线的工作。问:和 ML-DSA 预编译提案什么关系?同为 NIST 标准化的格签名,签名尺寸大得多,两条预编译路线互补覆盖不同权衡。问:Rollup 能用吗?提案明确主要面向以太坊 Rollup,各链自行采纳即可引入,不必等 L1 硬分叉。

风险提示:本文仅介绍密码学与协议草案,不构成投资建议;算法细节与 gas 数值以官方规范文本为准。