Page 248 - 《软件学报》2020年第12期
P. 248

3914                                Journal of Software  软件学报 Vol.31, No.12, December 2020

         链的签名子块信息.

                         传统区块链             SpaceMint区块链                可修改区块链

                           区块头:           记账者对交易签名ζ τ              记账者对交易签名ζ Hash(τ)⊕G

                      Hash(…,MT_Root τ,…)   If:                    If:
                    If:                         τ→τ′                      τ→τ′
                           τ→τ′

                                _  ′           ζ τ→ ζ ′             矿工重新计算 G′,使得
                     MT_Root τ→ MTRoot τ           τ                Hash(τ)⊕G=Hash(τ′)⊕G′

                     Hash(…,MT_Root τ,…)≠       σ≠σ′                 ζ Hash(τ)⊕G=ζ Hash(τ′)⊕G′
                      Hash (...,MT _Root τ ′ ,...)
                                         THEN:                           σ i,G= σ ′
                    THEN:                                          THEN:     , iG

                                          签名子块链接关系破坏
                      区块头链接关系破坏                                    签名子块链接关系未破坏

                                    不可修改                                  可修改

                    Fig.6    Comparison of transaction modification results under different block structures
                                   图 6   不同区块结构下的交易修改结果对比
         2.2   可修改的区块链原理
             在可修改区块链中,超过阈值的节点同意时,可对上链数据进行符合系统利益的合法修改,修改操作不破坏
         区块链接结构.下面详细说明如何实现数据修改和保证修改操作合法.
         2.2.1    如何实现数据修改
             (1)  修改请求合法性验证
             当区块链网络节点认为相关交易数据需要修改时,可向全网发送修改请求 ReviseTx,其合法性由区块 i 的修
         改群组验证.群组成员为区块 i 挖矿排名前 Q 位的各个矿工 P                 i  j ( j = 1,2,..., )Q .当 Q 名矿工全部认可 ReviseTx 时,
         本次修改请求被视为合法,进入数据修改进程;否则请求将被驳回.通过合理的阈值设定(具体在第 2.2.2 节进行
         分析),修改群组意见可代表系统意志和利益,由修改群组进行修改请求的合法性验证是合理的.其中,ReviseTx=
         {id Block ,reason,ctx old ,ctx new },其内容依次为:修改交易所在的区块号、修改原因、待修改交易信息集合以及建议
         修改成的新交易信息集合.
             (2)  数据修改操作实施
             当修改请求合法时,区块 i 的修改群组即相应 Q 名矿工将实施数据修改操作.Q 名矿工将根据 ReviseTx 中
         的 ctx old 和 ctx new ,计算交易子块τ i 对应的τ′ ,即修改后的交易信息.接着,Q 名矿工重新计算一组新的随机数
                                             i
          x′  i 1 ,x′  i 2 ,...,x′  i Q  ,得到全新的 G′ ,使得 Hash ()τ  i  G i  ( ,x x i 2 ,...,x i Q ) =  Hash ′ ⊕  ()τ ⊕  i  G i (x x′ i 1 , ′  i 2 ,...,x′  i Q ) ,保证签名子块σ i,G 中
                                                1
                                                i
                               i
         的ζ Hash(τ)⊕G 不变,也即: sign (Hash ′ ⊕ ( )τ i  G′ i ) =  sign (Hash ( )τ ⊕  i  G =  i ) ζ Hash () Gτ ⊕  .如此,交易数据改变并未引起签名子
         块的变化,无需对后续区块数据进行调整,维持了区块链接结构,是具有可操作性的区块数据修改.然后,Q 名矿
         工新随机数在系统更新.如第 2.1 节所述,Q=N×阈值比例,因此,Q 名矿工满足随机数更新条件,更新合法;同时,矿
         工将交易子块τ i 变更为τ′ ,全网可随时验证数据的合法性.交易数据的合法修改正式完成.
                             i
             (3)  系统状态更新
             交易数据修改后,系统会进行相关状态更新,主要包括上述随机数及交易信息的更新;同时,为记录本次数
         据修改过程以供溯源,修改完成后,将生成一条对应的交易信息:
                                                           , ′
                           ctx =  (revise ,id Tx , ,t id Block ,reason , ,x x i 2 ,...,x x x′ i 1 ,  i 2 ,..., x′  i  Q ,ctx old  ,ctx new ).
                                                    1
                                                          Q
                                                          i
                                                    i
             其内容依次为:交易的类型标识符、交易号、生成时间、数据修改的区块号、修改原因、修改前、后相应
         矿工的专属随机数以及修改前、后的交易信息集合.特别地,ctx old 和 ctx new 为实际修改的交易集合,并非整个交
         易块数据,以便节约空间.若对数据的修改为删除操作,则 ctx new =0.该交易将于后续挖矿中被打包上链.
   243   244   245   246   247   248   249   250   251   252   253