文章介绍了Nervos CKB区块链如何通过架构设计实现原生量子抗性。CKB将加密原语从共识层解耦到可编程的锁脚本中,使用户无需硬分叉即可升级到后量子密码学。同时,CKB通过分离规则与证据的数据结构,有效处理了量子抗性签名体积大的问题。文章详述了SPHINCS+锁脚本的实现、性能基准(不同参数集下的签名大小和验证周期)以及社区应用如量子钱包。CKB的量子抗性已在主网上线。
随着区块链行业日益成熟,它正面临一个迫在眉睫的生存威胁:大规模量子计算。虽然这常被视为未来问题,但攻击者采用的“先截获,后解密”(Harvest Now, Decrypt Later)策略——即今天拦截加密数据,待量子硬件成熟后再进行解密——使得这一架构问题必须尽早解决。
包括比特币和以太坊在内的大多数主流区块链,在地址推导和交易签名上都依赖椭圆曲线密码学(ECC)。一台足够强大的量子计算机运行 Shor 算法,就可能从公钥推导出私钥,从而破坏这些系统的安全假设。
虽然行业正在推进标准化防御(例如 NIST 的后量子密码学竞赛),但 CKB 与大多数其他区块链之间的实现路径存在根本差异。抗量子性是一种架构属性,而非事后补丁。
大多数区块链在抗量子性方面面临两个主要原因:硬编码的密码原语 和 数据大小限制。CKB 的抗量子方法并不依赖于逐步解决这些限制,而是基于一种从第一性原理出发避免这些限制的架构设计。
许多 Layer 1 区块链的一个核心限制是密码原语被硬编码到共识协议中。这种僵化造成了重大制约:升级到抗量子密码学通常需要协调全网范围内的硬分叉。
在以太坊或比特币这样的区块链中,“交易 X 有效”这一规则实际上被硬连线为检查特定的 ECDSA 签名。更改这一规则不仅仅是软件更新,更是对该区块链根本协议的改变。
相比之下,CKB 被设计为一条密码抽象区块链。在 CKB 中,协议本身不依赖于任何特定密码算法(例如 secp256k1)。密码学并非嵌入共识规则,而是作为在虚拟机中运行的 Lock Script(智能合约)来实现。作为对比,以太坊将硬编码的 ECC 直接以预编译合约形式嵌入 EVM。

这种抽象将抗量子性从治理驱动的协议变更转变为用户级别的选择。用户无需硬分叉即可采用抗量子密码学。未来,如果量子计算机破坏了当前的加密技术,CKB 支持以下升级路径:
code_hash 的新地址。网络不会分叉。旧地址继续可用。升级无需许可,且可随时间逐步进行。
即使其他区块链成功协调了硬分叉,它们仍然面临物理限制:数据大小。抗量子签名的体积远大于经典签名,这直接影响交易大小和费用。
以比特币为例子,用 ML-DSA 签名合并 100 个 UTXO 可能产生超过 250KB 的交易,在网络拥堵期间可能导致极高的交易费用。
Nervos CKB 不存在此类问题,因为签名验证通过将规则(Lock Script)与证明(Witness)分离来实现。此外,CKB 支持对共享相同 Lock Script 的输入进行分组,使得多个输入可以通过存储在交易 Witnesses 中的单个签名来验证。

因此,使用 SPHINCS+ 签名移动 100 个 Cell 所需的签名数据量不会超过使用相同方案转移单个 Cell 所需的数据量。更多细节请参见 Script Group Execution 和 Witness 文档。
2023 年,CKB 团队和 Cryptape 研究人员使用 SPHINCS+ 实现了一个生产就绪的抗量子 Lock Script。2024 年 8 月,NIST 正式批准 SPHINCS+ 作为其 FIPS 205 标准下的抗量子数字签名算法。2025 年,CKB 团队开始在 CKB 主网上部署 SPHINCS+ Lock Script。

该 Lock Script 支持 12 种不同的 SPHINCS+ 参数集,用户可自行选择。它基于新的 CKB_TX_MESSAGE_ALL 定义生成签名消息。默认情况下,该 Lock Script 实现为多重签名 Script,单签名使用作为特例处理。
CKB 团队选择 SPHINCS+ 作为参考实现,因为它是一种无状态的、基于哈希的数字签名方案。
SPHINCS+ 的主要折中是签名大小。CKB 通过其 Witness 数据结构解决了这一问题。CKB 将“Lock”(定义规则)与“Witness”(提供证明)分离。大型签名(如 20 KB 的 SPHINCS+ 签名)存储在 Witness 中,后者是灵活且以交易为作用域的,而不是存储在定义状态的 Lock Script 中。
该 Lock Script 有 3 种实现:
实际周期消耗因签名不同略有差异,以下是每个 NIST 批准参数集的周期消耗大致估算(这里测量整个 Script 的周期消耗,包含 CKB 交易签名,M 表示百万):
| 128s bit | 128f bit | 192s bit | 192f bit | 256s bit | 256f bit | |
|---|---|---|---|---|---|---|
| 公钥大小 | 32 | 32 | 48 | 48 | 64 | 64 |
| 签名大小 | 7856 | 17088 | 16224 | 35664 | 29792 | 49856 |
| sha2 simple (C) | 11.5M | 32.2M | 17.6M | 49.4M | 25.7M | 49.7M |
| sha2 simple (混合) | 11.6M | 34.5M | 18.5M | 49.4M | 25.7M | 49.0M |
| sha2 simple (Rust) | 21.9M | 59.2M | 31.5M | 87.1M | 45.3M | 92.6M |
| shake simple (C) | 20.5M | 60.4M | 31.7M | 91.9M | 46.5M | 91.5M |
| shake simple (混合) | 20.8M | 62.0M | 31.7M | 89.9M | 48.1M | 92.4M |
| shake simple (Rust) | 37.6M | 111.6M | 53.3M | 156.6M | 76.5M | 157.6M |
通常,s 变体生成签名耗时更长,但验证周期更少。f 变体签名生成较快,但验证周期更长。
随着 SPHINCS+ Lock Script 达到生产就绪状态,Nervos CKB 社区成员已经开始尝试基于 SPHINCS+ 的实际应用。
随着 CKB 生态系统的持续发展,预计将有更多基于 SPHINCS+ 的应用和工具出现。
CKB 不依赖未来的治理行动来引入新密码学,而是依靠架构分离。通过将密码机制与共识规则解耦,Nervos CKB 作为一个面向未来的容器——随时准备在不引起协议层面破坏的情况下容纳任何密码学变革。
| 特性 | 其他区块链 | Nervos CKB |
|---|---|---|
| 密码学 | 硬编码在协议中 | 通过 Script 可插拔 |
| 升级路径 | 全网硬分叉 | 无需许可迁移 |
| 后量子可行性 | 低(区块空间限制) | 高(灵活的 Witness 数据) |
| 现状 | 研究 / 理论 | 主网已上线 |
- 原文链接: docs.nervos.org/docs/ckb...
- 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!
作者暂未设置收款二维码