Page 112 - 《软件学报》2025年第10期
P. 112
王御天 等: 基于多父链辅助工作量证明共识机制的后量子区块链系统 4509
率分析. 第 4 节对系统进行仿真实验和评估. 第 5 节总结全文.
1 相关工作
1.1 后量子签名算法在区块链中应用
1994 年, Shor 算法 [3] 提出, 可以在多项式时间解决离散对数问题和大整数分解问题, 而这对应的是, 对于量子
计算机, 目前的密码算法将受到安全性挑战. 2016 年, 美国国家标准研究院 (National Institute of Standards and
[4]
Technology, NIST) 进行后量子密码征集项目. 其中密码方案包含基于格、基于编码、基于哈希等方案. 其中基于
[5]
[6]
格的后量子密码算法, 包含 CRYSTALS-Dilithium 、Falcon 等数字签名算法.
与其他类型相比, 基于格的后量子数字签名, 例如 CRYSTALS-Dilithium, 速度一般强于其他类型后量子数字
签名, 但是空间开销有所增大. 董怡帆等人 [2] 改进 Dilithium 方案, 提出了基于素阶数域的数字签名方案, 记为
Dilithium-Prime. 与 Dilithium 相比, Dilithium-Prime 具有更小的内存开销, 更强的签名效率, 同时安全性也有所提高.
对于后量子签名算法在区块链中的应用也有一些探索. 例如, 对于基于格的后量子签名算法, Torres 等人 [7] 设
计了一种基于格的环签名并应用到门罗币中; Arielcoin 在基于 PoW 的公链系统中应用了 CRYSTALS-Dilithium
签名算法 [8] , 主要使用了 Dilithium3 参数; Hcash 采用 DAG (有向无环图) 的分布式结构 [9] , PoW 和 PoS 混合, 使用
基于环 LWE 的公钥加密方案.
在基于其他后量子签名的算法中, 也有一些尝试应用在共识机制中. 例如 ABC 链应用 Rainbow 签名算法 [10] ,
使用 PoW 共识机制, 但是基于多变量的 NP-hard 问题; QRL 使用基于散列的前向安全签名方案 [11] , 使用 WOTS+
作为主要构建块; Mochimo 同样使用 XMSS+ [12] , 又提出并验证一次性签名的 WOTS+变体.
1.2 工作量证明共识机制
区块链中的共识机制用于参与节点以何种方式对区块数据达成一致 [13] , 即选举出块者、生成区块、同步区
块的流程. 在公链系统中, 比特币 (BTC)、莱特币 (LTC) 等使用工作量证明 (PoW) 共识机制, PoW 共识机制利用
单向哈希函数计算, 当节点计算满足一定难度的哈希值就获得出块权. 其中, nounce 是遍历用来满足公式的值,
hashBlockHeader 是区块头的哈希值, Target 是目标值, 与难度成反比.
Hash(nounce+hashBlockHeader) < Target.
随着区块链的发展, PoW 共识机制因为具有去中心化强、安全程度高等优点, 被广泛应用. BTC 和 BCH 等在
共识机制中使用 Sha256 哈希函数, 算力自 2012 年 10 TH/s 增加到如今 500 EH/s 左右, 占据着目前绝大多数的算
力. LTC 和 Dogecoin 等在共识机制中使用 Scrypt 哈希函数, 算力目前达到 1 PH/s, 此外, 为了增加算力的应用率,
2014 年 LTC 进行硬分叉, 支持辅助工作量证明共识机制 (auxiliary proof of work, AuxPoW).
辅助工作量证明共识机制 [14] 在 PoW 的基础上进行改进, 达到同时进行两条区块链共同共识的效果, 其中需
要进行辅助工作量共识的区块链称为子链, 帮助子链进行共识的区块链称为父链. 但是目前的辅助工作量证明共
识机制只支持相同的哈希函数, 例如 LTC 和 Dogecoin 都使用 Scrypt 哈希函数.
1.3 难度调整算法
在工作量证明共识机制中, 由于算力随时发生变化, 为了维持出块时间保持稳定, 需要在一定周期内调整难
度, 一般认为 Target 越大, 计算出结果更容易, 难度更小; 反之, Target 越小, 难度更大. 在比特币中, 采用以下公式
调整难度 [15] , 其中, actualTimespan 表示一定出块数的实际出块时间, PoWTargetTimespan 表示一定出块数的目标
出块时间.
actualTimespan
newTarget = prevTarget × ,
powTargetTimespan
同时, 限制每次难度调整值倍数范围在 4 以内, 也就是新的难度值满足以下不等式:
0.25×prevTarget ⩽ newTarget ⩽ 4×prevTarget.
难度调整算法往往具有滞后性, 需要在一定时间周期内进行调整, 而算力变化非常快, 常见的有跳矿攻击 (pool-

