Page 120 - 《软件学报》2025年第10期
P. 120
王御天 等: 基于多父链辅助工作量证明共识机制的后量子区块链系统 4517
已经被证明 [22] .
(2) 双花攻击
双花攻击是指攻击者花费已经花费过的代币. 常见方式是通过自私挖矿的方式进行双花, 方法是将区块链进
行分叉, 挖到区块后不广播, 等产生一条长度大于主网的分支后, 再将其中的交易代币进行双花. 在多父链辅助工
作量证明共识机制中, 增加了算力来源, 而要使攻击者算力强于主网需要投入的算力明显增加, 进而降低分叉的可
能性. 此外与比特币等类似, 采用 UTXO、时间戳、多次确认等方式抵抗双花攻击.
(3) 数据交互中恶意修改信息
可以发现在 Mul-AuxPoW 共识过程中主要存在父链与矿池、子链与矿池的两类交互. 在交互过程中, 主要是
矿池将子链的区块头哈希与难度值提交给父链, 父链将计算结果通过矿池返回给子链. 对于这两类交互的信息如
果被恶意篡改, 对于将信息提交给父链, 只会引起父链辅助共识失败, 父链算力依然保证父链共识, 没有造成资源
浪费. 对于父链将计算结果返回给子链, 首先子链会检查子链区块头哈希和难度值与父链中写入是否一致, 如果恶
意修改数据后仍想保证哈希结果的正确值, 则需要与正在进行共识的同级别的算力.
3.2 难度调整算法安全性分析
对于比特币等采用难度调整算法, 常见具有两种算力攻击: 一种是跳矿攻击, 在多个周期不断减少算力, 总体
增加出块时间, 进而降低难度, 再在下一个周期增加算力. 通过这种方式, 敌手可以利用在不同的公链之中不断跳
转算力, 将算力提供到已经减少过算力的公链中, 此时该公链难度已经降低, 更加容易获得额外利益, 此后根据这
种方式将算力跳转到其他公链, 获得超额利益, 同时也会明显减少该周期出块时间, 降低稳定性. 另一种反之, 在多
个周期不断增加算力, 总体减少出块时间, 进而增加难度, 再在下一个周期减少算力, 大幅度增加出块时间, 严重时
可以使区块链暂停出块, 虽然这种方式很难对敌手产生利益, 但会对区块链的稳定程度造成严重影响.
而对于 Mul-AuxPoW 的难度调整算法, 有两类父链可以提供算力来源, 在这两种攻击中, 又可以分为算力较
大的父链 A 和算力相对较低的父链 B 分别进行算力的突增突减. 下面对可能出现的 4 种攻击进行分析.
(1) 父链 A 持续减少算力再突然增加算力. 这种攻击主要目的是使父链 A 获得更多利益, 但在难度调整算法
中, 希望父链 A 和 B 保持一定比例, 在参数中建议父链 A 的出块比例一般远大于父链 B. 所以在父链 A 这种攻击
中, 持续减少算力会持续减少之前的出块奖励, 而获取在一个周期相对较低的额外收益.
(2) 父链 A 持续增加算力再突然减少算力. 父链 A 持续增加算力, 使得父链 A 出块数增加且总体出块时间减
少, 两种结果都需要增加对父链 A 的难度. 为了避免这种攻击, 当发现出现这两种情况时, 尤其是使得父链 B 出块
但不是父链 B 自己减少算力使出块数减少到 0 时, 会明显减少父链 B 的难度增加程度.
数小于参数
B low limit
(3) 父链 B 持续减少算力再突然增加算力. 这种攻击主要目的是父链 B 不断减少出块数, 不能维持出块比例,
使得难度不断降低, 再突然增加算力, 会明显增加额外奖励. 为了避免这种攻击, 在父链出块 B 不断减少且出块时
间增加时, 需要控制父链 B 的难度降低程度, 使得父链 B 降低难度的收益不断降低.
(4) 父链 B 持续增加算力再突然减少算力. 由于父链 A 占据大多数的出块数量, 对于出块时间影响较大, 所以
父链 B 的这种数量攻击并不有效, 反而会明显降低父链 B 的收益.
3.3 Mul-AuxPoW 正确性分析
多父链辅助工作量证明共识机制如第 2.2 节所示, 在共识前为两类父链构建了不同难度的区块模板, 并根据
不同的父链类型将不同的难度 D 与子链区块头哈希值 H 写入对应父链的 CoinBase 交易中. CoinBase 交易作为区
块的一笔交易, 利用 Merkle 树的性质, CoinBase 的内容发生修改, 形成的 Merkle 树的 Root 也会发生修改, 进而父
链的区块头哈希也会改变. 而原本父链使用 PoW 共识机制中, 公式如下:
Hash(nounce+hashBlockHeader)<Target,
其中, hashBlockHeader 值发生改变, 那么遍历哈希的结果也不会相同, 所以 H 作为父链 CoinBase 交易中的一部
分, 与父链 hashBlockHeader 形成一一对应关系, 而 H 作为子链工作量证明的一部分, 可以理解为在父链的工作量
证明共识中也会进行对应难度 D 的计算, 进而满足工作量证明.

