一种基于序列标记值的可编辑区块链结构及更新方法技术

技术编号:38514962 阅读:13 留言:0更新日期:2023-08-19 16:57
一种基于序列标记值的可编辑区块链结构及更新方法,区块链结构为双链结构,一条为主链B,用于存储区块链的数据;一条为修正链BC,用于存储历次编辑过的区块数据;更新方法包括以下步骤:对区块链可编辑区域和可编辑权限作出界定;构造可编辑区块链的双链结构,主链中的每个区块由一个不参与区块哈希计算的单向递增的区块序列标记值标记;新增修正链区块时,通过修正链的共识机制对修正链新增区块;更新主链时,通过修正链依次更新主链的编辑区块和相关区块序列标记值,完成可编辑区块链的更新操作,确保链上数据的一致性;本发明专利技术不仅满足区块链的可编辑特性,而且能够保证区块链数据一致性,适用于具有多次编辑需求的区块链应用场景。应用场景。应用场景。

【技术实现步骤摘要】
一种基于序列标记值的可编辑区块链结构及更新方法


[0001]本专利技术涉及区块链
,特别涉及一种基于序列标记值的可编辑区块链结构及更新方法。

技术介绍

[0002]区块链技术具有去中心化、不可篡改的特点,然而区块链不可篡改的特性使得上链数据很难按照常规手段进行修改和删除。一旦区块链上出现有害数据、错误数据及冗余数据,必须通过硬分叉、回滚等技术手段来修改和删除,实施难度大,代价高。因此,要求区块链具有一定程度的可编辑特性有着迫切的现实应用需求。
[0003]目前,基于变色龙哈希函数的可编辑区块链方案因其编辑代价小、效率高而受到广泛关注。然而,该类方案容易导致同一区块具有相同哈希值的新旧版本同时存在,这挑战了区块链账本的一致性,严重影响了区块链系统的安全。另外,基于共识机制的区块链修改方案也能实现区块链的可编辑特性。Marsalek A等人在《A correctable public blockchain》一文中提出了一种可编辑的双链结构,数据链存储原始数据,修正链存储修改的数据。修正数据的提交是通过分散的投票完成的。Deuber D等人在《Redactable blockchain in the permissionless setting》一文中提出了双哈希链结构,修正的完成也是依赖于共识机制的投票。这些方案具有投票周期长、编辑代价大等缺陷,在一定程度上降低了可编辑区块链系统的效率和可用性。另外这些基于共识机制的可编辑区块链方案和结构没有考虑单个区块多次重复性编辑的问题。然而在现实应用中,由于Merkle树下存在多笔交易,同一区块内不同交易需要多次编辑和已编辑交易的再次编辑需求都是一种合理需求,因此,在可编辑区块链设计中需要考虑区块重复编辑特性。
[0004]申请号为CN202210745036.7的专利申请公开了一种支持状态快速更新的区块链细粒度编辑方法,其步骤包括:对于可编辑区块链每一首次执行的交易,根据该交易的执行过程信息生成该交易的快速执行代码并记录该交易执行过程的读集与写集;在区块链编辑权限拥有者编辑区块链上某个历史交易的编辑事件发生后,乐观地并行执行读集元素的状态相较于初次执行时发生改变的交易,并用该交易在首次执行时生成的快速执行代码加速交易的执行。在更新完某区块B中的所有交易后,并行更新区块B及其之前被此次更新影响的所有区块的块头中的状态树、交易树和收据树信息。但是该专利的缺点是:以基于共识的编辑机制和类似以太坊的链结构为前提,给出了一种支持状态快速更新的区块链编辑操作后的状态更新方法,该方法从本质上来讲,是通过硬分叉方式。实现状态的更新。无论对于是否有编辑需求的交易,都需要记录每条交易执行过程的读集与写集,这会增加额外的开销。据此,急需设计一种可编辑区块链结构及更新方法,既能保证账本数据一致性,又能适应于同一区块多次重复编辑需求的区块链应用场景。

技术实现思路

[0005]为了克服上述现有技术的缺陷,本专利技术的目的旨在提出一种基于序列标记值的可
编辑区块链结构及更新方法,用于解决可编辑区块链领域的重复编辑问题和数据一致性问题,引入序列标记值的概念,通过给每个区块添加独立于区块的序列标记值,运用双链结构,依据最新序列标记值实现区块更新操作,解决了使用变色龙哈希函数的编辑操作带来的账本一致性问题。
[0006]为了达到上述目的,本专利技术所采用的技术方案如下:
[0007]一种基于序列标记值的可编辑区块链结构,为双链结构,一条为主链B,用于存储区块链的数据;一条为修正链BC,用于存储历次编辑过的区块数据;
[0008]主链B由{seq
i
,B
i
}组成,其中i∈[0,m],m为主链最新区块的高度,B
i
为主链的区块,seq
i
为区块B
i
的序列标记值,具有单向递增、可修改且不参与区块哈希值的计算;区块B
i
结构可简要表示为B
i
=<s
i
,x
i
,ctr,CH(a

)>,i∈[0,m],s
i
∈{0,1}
K
表示长度为K位的前一个区块的哈希值,x
i
∈{0,1}
*
表示区块内任意长度的不可编辑数据,ctr代表主链的共识机制,a

为区块B
i
内可编辑区域η的数据,CH(a

)为可编辑数据a

的变色龙哈希值;
[0009]修正链BC结构表示为{BC
j
},j∈[0,n],n为修正链最新区块的高度。区块结构简要表示为BC
j
=<sc
j
,xc
j
,ctrc>,其中sc
j
∈{0,1}
k
为修正链上长度为k的前一个区块的哈希值,xc
j
∈{0,1}
*
代表长度任意的修正链区块数据,ctrc代表修正链的共识机制。区块数据xc
j
={seq

j
,B
j

},seq

j
代表封装在区块数据xc
j
中的序列标记值,主链区块B
i
=<s
i
,x
i
,ctr,CH(a

)>经过编辑后成功提交到修正链成为B
j

=<s
i
,x
i
,ctr,CH(a
i

η
)>,a
i

η
代表修改后的数据。
[0010]一种基于序列标记值的可编辑区块链更新方法,包括以下步骤:
[0011]S1:构建区块链之前,对区块链可编辑区域和可编辑权限作出界定,具体包括:
[0012]S1.1:对区块链可编辑区域进行划定,可编辑区域根据场景从数据项级到区块级进行不同粒度的划定并用变色龙哈希函数对可编辑内容进行封装;
[0013]S1.2:对区块链编辑权限进行划定,规定交易双方均有权对交易附加信息进行修改,经对方同意后可将编辑区块提交至修正链。
[0014]S2:构造可编辑区块链的双链结构,一条为主链B,用来存储整个区块链的完整账本,每块由区块序列标记值seq标记;一条为修正链BC,用于存储主链历次编辑成功的区块数据;首先分别创建主链创世区块和修正链创世区块;创建主链创世区块B0,并用seq0标记,其中seq0=1,将{seq0,B0}打包封装后形成修正链创世区块BC0。
[0015]S3:进行主链区块序列标记值一致性检查
[0016]其步骤为:
[0017]S3.1:检查主链创世区块B0是否存在及创世区块的序列标记值seq0是否为1;若B0不存在,则创本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于序列标记值的可编辑区块链结构,其特征在于,为双链结构,一条为主链B,用于存储区块链的数据;一条为修正链BC,用于存储历次编辑过的区块数据。2.根据权利要求1所述的一种基于序列标记值的可编辑区块链结构,其特征在于,所述主链B由{seq
i
,B
i
}组成,其中i∈[0,m],m为主链最新区块的高度,B
i
为主链的区块,seq
i
为区块B
i
的序列标记值,具有单向递增、可修改且不参与区块哈希值的计算;区块B
i
结构可简要表示为B
i
=<s
i
,x
i
,ctr,CH(a

)>,i∈[0,m],s
i
∈{0,1}
K
表示长度为K位的前一个区块的哈希值,x
i
∈{0,1}
*
表示区块内任意长度的不可编辑数据,ctr代表主链的共识机制,a

为区块B
i
内可编辑区域η的数据,CH(a

)为可编辑数据a

的变色龙哈希值。3.根据权利要求1所述的一种基于序列标记值的可编辑区块链结构,其特征在于,所述修正链BC结构表示为{BC
j
},j∈[0,n],n为修正链最新区块的高度;区块结构简要表示为BC
j
=<sc
j
,xc
j
,ctrc>,其中sc
j
∈{0,1}
k
为修正链上长度为k的前一个区块的哈希值,xc
j
∈{0,1}
*
代表长度任意的修正链区块数据,ctrc代表修正链的共识机制;区块数据xc
j
={seq

j
,B
j

},seq

j
代表封装在区块数据xc
j
中的序列标记值,主链区块B
i
=<s
i
,x
i
,ctr,CH(a

)>经过编辑后成功提交到修正链成为B
j

=<s
i
,x
i
,ctr,CH(a
i

η
)>,a
i

η
代表修改后的数据。4.一种基于序列标记值的可编辑区块链更新方法,其特征在于,包括以下步骤:S1:构建区块链之前,对区块链可编辑区域和可编辑权限作出界定;S2:构造可编辑区块链的双链结构,一条为主链B,用来存储整个区块链的完整账本,每块由区块序列标记值seq标记;一条为修正链BC,用于存储主链历次编辑成功的区块数据;首先分别创建主链创世区块和修正链创世区块;创建主链创世区块B0,并用seq0标记,其中seq0=1,将{seq0,B0}打包封装后形成修正链创世区块BC0;S3:主链区块序列标记值一致性检查S4:新增修正链区块,修正链用于存储主链历次编辑成功的区块数据,当修正区块提交成功后,通过修正链的共识机制对修正链新增区块;S5:更新主链,主链根据修正链区块的数据,更新主链编辑区块和相关区块的序列标记值,进而保证可编辑区块链账本的一致性。5.根据权利要求4所述的一种基于序列标记值的可编辑区块链更新方法,其特征在于,所述步骤S1具体为:S1.1:对区块链可编辑区域进行划定,可编辑区域根据场景从数据项级到区块级进行不同粒度的划定并用变色龙哈希函数对可编辑内容进行封装;S1.2:对区块链编辑权限进行划定,规定交易双方均有权对交易附加信息进行修改,经对方同意后可将编辑区块提交至修正链。6.根据权利要求4所述的一种基于序列标记值的可编辑区块链更新方法,其特征在于,所述步骤S3具体为:S3.1:检查主链创世区块B0是否存在及创世区块的序列标记值seq0是否为1;若B0不存在,则创建创世区块B0,将创世区块的序列标记值seq0赋值为1;S3.2:通过对主链序列标记值的大小关系进行比较,检查主链的序列标记是否存在错误,原则是:当前一个区块的序列标记值大于后一个区块的序列标记值时,说明主链的区块序列标记存在错误,将所有区块的序列标记值赋值为创世区块的序列标记值,即seq
i
=1,i
∈[1,m];S3.3:通过比较主链最新区块的序列标记值seq
m
和修正链中最新区块封装的数据中seq
n
...

【专利技术属性】
技术研发人员:李皎雷林
申请(专利权)人:西安石油大学
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1