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  的计算, 进而满足工作量证明.
   115   116   117   118   119   120   121   122   123   124   125