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.该交易将于后续挖矿中被打包上链.