1.本发明属于
区块链技术领域,具体涉及一种安全可扩展的
分片区块链构造方法。
背景技术:
2.传统链式区块链的低吞吐量难以支撑高频次高并发应用场景的需求,严重制约了区块链的实际应用,成为区块链发展的瓶颈。分片技术源于数据库,引入到区块链中用来解决传统区块链的扩展和延时问题,在提升交易吞吐量方面是一个突破性和创新性的技术。
3.目前分片区块链面临许多的挑战。首先,分片操作会使得单一分片内
节点的数量相较于传统区块链减少,容易遭受女巫攻击,对整个系统的安全性造成相当大的威胁;其次,由于分片区块链在节点数量和组织结构上与传统单链存在明显的区别,因此传统单链共识协议应用于分片区块链中需要做相应的修改,这可能导致分片区块链的共识速度低于传统的单链,进而直接影响区块链系统的使用效率;此外,实现状态分片使得各个分片链只负责托管自己的分片数据,这使得分片链面临交易数据的有效性和可用性问题,使得交易的全局一致成为挑战。
4.鉴于上述挑战,构造一种安全可扩展的分片区块链方法是非常有必要且实用的。高性能的分片区块链系统在物联网,工业4.0,供应链,金融科技等领域具有非常重要的实用价值,具有非常好的发展前景。
技术实现要素:
5.本发明的目的是发明一种安全可扩展的分片区块链构造方法,利用基于椭圆曲线的可验证随机函数(ec-vrf)构造新的分片共识协议实现高的交易处理性能,利用验证链保证交易的全局一致。
6.本发明所采用的技术方案是,安全可扩展的分片区块链构造方法,具体按照以下步骤实施:
7.步骤1、共识协议设计,包括分片验证集合选择,动态的记账节点选择和分片区块生成;
8.步骤2、验证链记账;
9.步骤3、全局
随机数更新和时间轮同步。
10.本发明的特征还在于,
11.步骤1具体按照以下步骤实施:
12.步骤1.1、全局初始化:在分片中,时间被分为时段epoch,记为epoch
t
,t=1,2,
…
,每一个时段epoch又分为c个子时段,以分片链κ∈{1,
…
,k}在时段t的运行过程为例,最先加入网络中的节点互相通信产生一个公共的初始随机值r0作为初始全局随机数;
13.步骤1.2、分片节点生成可验证随机数及其证明;设计ec-vrf生成可验证随机数及其证明,具体步骤为:分片链κ中的节点i选择公私钥对为(pki,ski),私钥公钥pki=ski·
g,g是椭圆曲线e(fq)的基点,g的阶数为n,是小于n且与n互素的元素构成的乘法
;以上一个时段epoch
t-1
(t=1,2,
…
)生成的全局随机数r
t-1
、节点公钥pki作为输入,得到字符串mi=r
t-1
||pki,这里||表示级联;节点i随机选择计算li=li·
g=(x
i*
,y
i*
),其中x
*
为l的横坐标,y
*
为l的纵坐标,计算ξi=x
i*
modq,modq,这里哈希函数得到ei=h(πi),之后计算σi=l-1
(πi+ξ
·
ski)modn,节点i得到关于字符串mi的随机数ei的证明
14.步骤1.3、分片链κ中的所有节点判断自己是否是候选验证节点;
15.步骤1.4、验证节点选择:分片链κ中的节点首先对所有候选节点的证明元组进行验证,以对分片链κ中节点i的验证过程为例,具体为:首先计算判断这里来自若不成立则关于候选节点i的验证失败,否则继续计算若不成立则关于候选节点i的验证失败,否则继续计算令ζi=x
′imodq,若ζi=ξi,则候选节点i验证成功,否则证明失败;之后,对验证通过的所有分片链κ中的候选节点的参考值{refi}按照由大到小的顺序进行排序,前τ个参考值所代表的候选节点即为选择出的验证节点集合,τ为分片链κ选择的验证节点的数目;
16.步骤1.5、验证集合形成:分片链κ中验证节点之间相互通信建立分片验证节点集合vn
t
并确认;
17.步骤1.6、动态的子时段分片记账节点选择:在分片链κ中,验证节点集合vn
t
中的节点将时段epoch
t
选出的验证节点的可验证随机数组成一棵merkle树,叶子节点为每一个验证节点的可验证随机数,随机数的哈希值为叶节点的权重,这里哈希函数选择sha256;非叶子结点的权重为左右子树的权重之和,weight
δ
为该树节点的最大权重;之后,为epoch
t
的每一个子时段j,j=1,
…
,c-1分别选择记账节点,表示分片链κ在时段epoch
t
的第j个子时段的初始种子值,这里r
t-1
为上一时段的公共随机数;在每个子时段中,对构造的merkle树自顶向下遍历,将种子值输入伪随机函数中生成一个随机数,如果生成的随机数小于左子树的权重则选择左子树,否则选择右子树,依次以上一层生成的随机数作为p_f(
·
)的输入生成新的随机数进行遍历,直到选择某一个叶子节点的可验证随机数为则节点ij被选中作为第j子时段的记账节点;
18.步骤1.7、分片记账及区块头签名生成:记账节点ij收集分片矿池中的交易,生成交易区块之后,随机选择计算
[0019][0020][0021][0022]
得到区块头签名ωj=(qj,μj),这里tj=
(epoch
t
||j);分片区块头的具体表示为:κ为分片链,tj=(epoch
t
||j)为分片时段和子时段索引号,hash
pre
为前一个验证区块的哈希值,sub-hash
pre
为分片上前一区块的哈希值,timestamp为分片区块生成的时间戳,为分片记账节点ij的可验证随机数和证明,merkle_rootj为当前子时段收集交易的merkle树根;记账节点ij将区块和区块头签名ωj=(qj,μj)广播至分片链κ,验证节点集合中的其余验证节点对区块合法性进行验证;当收到至少个验证节点对区块的正确验证结果时,记账节点将该区块记录在它所在的分片链上;
[0023]
步骤1.8、区块头打包:第c-1个子时段的记账节点生成区块同时收集epoch
t
中所有生成的区块头签名{ωj}
j=1,,c-1
以及区块头的集合发送到验证链上。
[0024]
步骤1.3具体按照以下步骤实施:
[0025]
步骤1.3.1、节点i拥有si个标准单位的,表示为节点i拥有si个权益值;之后,节点i用生成的ei计算
[0026]
步骤1.3.2、节点i将区间[0,1)划分为si个连续区间的形式,在si个权益值中选择恰好η个权益值的概率服从二项分布b(si,p):
[0027]
其中,这里τ为分片链κ选择的验证节点的数目,表示分片链κ中拥有的所有的权益值数量;
[0028]
步骤1.3.3、若且d
*
>0,d
*
∈{1,
…
,s
i-1},则表示节点i成为候选验证节点,且节点i恰好有d
*
个权益值被选中,进行步骤1.3.4;若d
*
=0,则表示该节点没有被选中,节点i退出验证节点选择过程;
[0029]
步骤1.3.4、候选验证节点i计算令候选节点i将关于字符串mi的随机数ei、证明参考值refi,即证明元组<mi,ei,proofi,refi>广播至分片链κ中。
[0030]
步骤2具体按照以下步骤实施:
[0031]
步骤2.1、验证链成员形成:每一个分片链κ∈{1,
…
,k}的第c-1个子时段的记账节点组成验证链的成员节点,形成验证链成员集合cn
t
;每一个cn
t
中的节点打包当前epoch
t
生成的区块头及签名提交至验证链上;
[0032]
步骤2.2、分片区块批量验证及验证区块生成:将cn
t
中各个成员的可验证随机树形成merkle树,以seed=h(r
t-1
||epoch
t
)作为随机种子,按照步骤1.6的方法,选择出验证链的记账节点i
t
,记账节点i
t
收集所有cn
t
中的节点提交的区块头及签名对每一个分片链κ(κ∈{1,
…
,k})提交的计算这里ωj=(qj,μj),之后验证若验证成功,则将中的每一个区块头作为验证区块的一个交易,生成验证区块vh
t
广播至验证链;
[0033]
步骤2.3、区块同步:各个分片链同步最新生成的验证区块,确保交易的全局一致。
[0034]
步骤3具体按照以下步骤实施:
[0035]
步骤3.1、全局随机数更新:验证链的记账节点i
t
计算这里v
t
=head(vh
t
)为时段epoch
t
生成的验证区块的区块头,为验证链记账节点i
t
的公钥;验证链区块头的具体表达形式为:epoch
t
为时段索引号,hash
pre
为上一个验证区块的区块哈希值,timestamp为验证区块生成的时间戳,r
t
是为下一个时段epoch
t+1
生成的全局随机数,为验证链记账节点i
t
的可验证随机数和证明,merkle_root
t
为当前时段epoch
t
以分片区块头作为交易生成的merkle根;
[0036]
步骤3.2、时间同步:验证链的记账节点i
t
在将epoch
t
中的验证区块添加到验证链上时,执行网络时间同步协议,启动下一个时段epoch
t+1
,将全局随机数更新为r
t
,一个轮回结束;之后,以更新的全局随机数r
t
作为输入,从步骤1.2开始,进行下一个时段epoch
t+1
分片验证节点集合的选择,依次进行后续步骤,使得分片系统得以持续运行。
[0037]
本发明的有益效果是:
[0038]
本发明安全可扩展的分片区块链构造方法,应用设计的tyche共识协议在各个分片中选择分片验证节点集合和记账节点并引入时段概念,实现多时段、动态的节点选择算法,保证选择结果不可预测性和分片的安全性;设计批量验证算法,实现分片区块的二次验证,提升分片区块链系统的交易处理效率;各分片只需同步验证链来存储分片状态,保证交易数据的有效性和可用性。
附图说明
[0039]
图1是本发明安全可扩展的分片区块链构造方法中tyche共识模型的运行流程示意图;
[0040]
图2是本发明安全可扩展的分片区块链构造方法中子时段j记账节点选择过程的示意图;
[0041]
图3是本发明安全可扩展的分片区块链构造方法的流程图。
具体实施方式
[0042]
下面结合附图和具体实施方式对本发明进行详细说明。
[0043]
本发明提供一种安全可扩展的分片区块链构造方法,如图1-3所示,具体按照以下步骤实施:
[0044]
步骤1、共识协议设计,包括分片验证集合选择,动态的记账节点选择和分片区块生成;分片中的tyche共识模型的运行流程如图1所示,在分片中,时间被分为时段epoch,记为epoch
t
,t=1,2,
…
,每一个时段epoch又分为c个子时段,以分片链κ∈{1,
…
,k}在时段t中,tyche共识模型的运行过程为例,阐述tyche共识模型的运行流程如下。
[0045]
步骤1具体按照以下步骤实施:
[0046]
步骤1.1、全局初始化:最先加入网络中的节点互相通信产生一个公共的初始随机值r0作为初始全局随机数;
[0047]
步骤1.2、分片节点生成可验证随机数及其证明:设计ec-vrf生成可验证随机数及其证明,具体步骤为:以分片链κ中的节点i生成可验证随机数及其证明过程为例;分片链κ中的节点i选择公私钥对为(pki,ski),私钥公钥pki=ski·
g,g是椭圆曲线e(fq)的基点,g的阶数为n,是小于n且与n互素的元素构成的乘法;以上一个时段epoch
t-1
(t=1,2,
…
)生成的全局随机数r
t-1
、节点公钥pki作为输入,得到字符串mi=r
t-1
||pki,这里||表示级联;节点i随机选择计算li=li·
g=(x
i*
,y
i*
),其中x
*
为l的横坐标,y
*
为l的纵坐标,计算ξi=x
i*
modq,这里哈希函数得到ei=h(πi),之后计算σi=l-1
(πi+ξ
·
ski)modn,节点i得到关于字符串mi的随机数ei的证明
[0048]
步骤1.3、分片链κ中的所有节点判断自己是否是候选验证节点:以分片链κ中的节点i判断过程为例,具体判断过程根据以下步骤实施:
[0049]
步骤1.3.1、节点i拥有si个标准单位的(这里stocki为节点i的总数,θ可根据分片中总量进行调节),也可表示为节点i拥有si个权益值;之后,节点i用生成的ei计算
[0050]
步骤1.3.2、节点i将区间[0,1)划分为si个连续区间的形式,在si个权益值中选择恰好η个权益值的概率服从二项分布b(si,p):
[0051]
其中,这里τ为分片链κ选择的验证节点的数目,表示分片链κ中拥有的所有的权益值数量;
[0052]
步骤1.3.3、若且d
*
>0,d
*
∈{1,
…
,s
i-1},则表示节点i成为候选验证节点,且节点i恰好有d
*
个权益值被选中,进行步骤1.3.4;若d
*
=0,则表
示该节点没有被选中,节点i退出验证节点选择过程;
[0053]
步骤1.3.4、候选验证节点i计算令候选节点i将关于字符串mi的随机数ei、证明参考值refi,即证明元组<mi,ei,proofi,refi>广播至分片链κ中;
[0054]
步骤1.4、验证节点选择:分片链κ中的节点首先对所有候选节点的证明元组进行验证,以对分片链κ中节点i的验证过程为例。首先计算判断这里来自若不成立则关于候选节点i的验证失败,否则继续计算令ζi=x
′imodq,若ζi=ξi,则候选节点i验证成功,否则证明失败;之后,对验证通过的所有分片链κ中的候选节点的参考值{refi}按照由大到小的顺序进行排序,前τ个参考值所代表的候选节点即为选择出的验证节点集合,τ为分片链κ选择的验证节点的数目;
[0055]
步骤1.5、验证集合形成:分片链κ中验证节点之间相互通信建立分片验证节点集合vn
t
并确认;
[0056]
步骤1.6、动态的子时段分片记账节点选择:在分片链κ中,验证节点集合vn
t
中的节点将时段epoch
t
选出的验证节点的可验证随机数组成一棵merkle树,叶子节点为每一个验证节点的可验证随机数,随机数的哈希值为叶节点的权重,这里哈希函数选择sha256;非叶子结点的权重为左右子树的权重之和,weight
δ
为该树节点的最大权重;之后,为epoch
t
的每一个子时段j,j=1,
…
,c-1分别选择记账节点,表示分片链κ在时段epoch
t
的第j个子时段的初始种子值,这里r
t-1
为上一时段的公共随机数;在每个子时段中,对构造的merkle树自顶向下遍历,将种子值输入伪随机函数中生成一个随机数,如果生成的随机数小于左子树的权重则选择左子树,否则选择右子树,依次以上一层生成的随机数作为p_f(
·
)的输入生成新的随机数进行遍历,直到选择某一个叶子节点的可验证随机数为则节点ij被选中作为第j子时段的记账节点;具体实例如图2所示,验证节点n1,...,n8作为叶节点,每个节点的可验证随机数为叶节点的权重,按照merkle树形成方式,非叶节点的值是左右孩子节点的哈希值。非叶子节点的权重为左右孩子节点的权重之和,如节点n1的权重为28,n2的权重为16,则父节点的权重为16+28=44。从下至上依次遍历,得到树的最大权重weight
δ
=146。之后进行记账节点的选择过程。第一步:以epoch=20的第3个子时段记账节点选择过程为例,初始种子值这里r
t-1
=66,将22代入伪随机函数p_f(
·
),计算得到p_f(22)=50,50小于左子树的权重76,选择左子树;第二步:以第一步得到的随机数50作为输入,计算得到p_f(50)=20,20小于左子树的权重44,选择左子树;第三步:以第二步得到的随机数20作为输入,计算p_f(20)=42,42大于左子树的权重28,选择右子树;第四步:右子树对应的叶节点n2被选为记账节点。
[0057]
步骤1.7、分片记账及区块头签名生成:记账节点ij收集分片矿池中的交易,生成
交易区块之后,随机选择计算
[0058][0059][0060][0061]
得到区块头签名ωj=(qj,μj),这里tj=(epoch
t
||j);分片区块头的具体表示为:κ为分片链,tj=(epoch
t
||j)为分片时段和子时段索引号,hash
pre
为前一个验证区块的哈希值(见步骤3.1),sub-hash
pre
为分片上前一区块的哈希值,timestamp为分片区块生成的时间戳,为分片记账节点ij的可验证随机数和证明,merkle_rootj为当前子时段收集交易的merkle树根;记账节点ij将区块和区块头签名ωj=(qj,μj)广播至分片链κ,验证节点集合中的其余验证节点对区块合法性进行验证;当收到至少个验证节点对区块的正确验证结果时,记账节点将该区块记录在它所在的分片链上;
[0062]
步骤1.8、区块头打包:第c-1个子时段的记账节点(为区分步骤2.1中验证链的成员节点,对第c-1个子时段的记账节点带分片链κ进行标记)生成区块同时收集epoch
t
中所有生成的区块头签名{ωj}
j=1,
…
,c-1
以及区块头的集合发送到验证链上。
[0063]
步骤2、验证链记账;
[0064]
步骤2具体按照以下步骤实施:
[0065]
步骤2.1、验证链成员形成:每一个分片链κ∈{1,
…
,k}的第c-1个子时段的记账节点组成验证链的成员节点,形成验证链成员集合cn
t
;每一个cn
t
中的节点打包当前epoch
t
生成的区块头及签名提交至验证链上;
[0066]
步骤2.2、分片区块批量验证及验证区块生成:将cn
t
中各个成员的可验证随机树形成merkle树,以seed=h(r
t-1
||epoch
t
)作为随机种子,按照步骤1.6的方法,选择出验证链的记账节点i
t
,记账节点i
t
收集所有cn
t
中的节点提交的区块头及签名对每一个分片链κ(κ∈{1,
…
,k})提交的计算这里ωj=(qj,μj),之后验证若验证成功,则将中的每一个区块头作为验证区块的一个交易,生成验证区块vh
t
广播至验证链;
[0067]
步骤2.3、区块同步:各个分片链同步最新生成的验证区块,确保交易的全局一致。
分片区块只有被添加在验证链上,才能最终被确认为有效区块。
[0068]
步骤3、全局随机数更新和时间轮同步;
[0069]
步骤3具体按照以下步骤实施:
[0070]
步骤3.1、全局随机数更新:验证链的记账节点i
t
计算这里v
t
=head(vh
t
)为时段epoch
t
生成的验证区块的区块头,为验证链记账节点i
t
的公钥。验证链区块头的具体表达形式为:epoch
t
为时段索引号,hash
pre
为上一个验证区块的区块哈希值,timestamp为验证区块生成的时间戳,r
t
是为下一个时段epoch
t+1
生成的全局随机数,为验证链记账节点i
t
的可验证随机数和证明,merkle_root
t
为当前时段epoch
t
以分片区块头作为交易生成的merkle根。
[0071]
步骤3.2、时间同步:验证链的记账节点i
t
在将epoch
t
中的验证区块添加到验证链上时,执行网络时间同步协议(ntp),启动下一个时段epoch
t+1
,将全局随机数更新为r
t
,一个轮回结束;之后,以更新的全局随机数r
t
作为输入,从步骤1.2开始,进行下一个时段epoch
t+1
分片验证节点集合的选择,依次进行后续步骤,使得分片系统得以持续运行。
技术特征:
1.安全可扩展的分片区块链构造方法,其特征在于,具体按照以下步骤实施:步骤1、共识协议设计,包括分片验证集合选择,动态的记账节点选择和分片区块生成;步骤2、验证链记账;步骤3、全局随机数更新和时间轮同步。2.根据权利要求1所述的安全可扩展的分片区块链构造方法,其特征在于,步骤1具体按照以下步骤实施:步骤1.1、全局初始化:在分片中,时间被分为时段epoch,记为epoch
t
,t=1,2,
…
,每一个时段epoch又分为c个子时段,最先加入网络中的节点互相通信产生一个公共的初始随机值r0作为初始全局随机数;步骤1.2、分片节点生成可验证随机数及其证明:设计ec-vrf生成可验证随机数及其证明,具体步骤为:分片链κ中的节点i选择公私钥对为(pk
i
,sk
i
),私钥公钥pk
i
=sk
i
·
g,g是椭圆曲线e(f
q
)的基点,g的阶数为n,是小于n且与n互素的元素构成的乘法;以上一个时段epoch
t-1
(t=1,2,
…
)生成的全局随机数r
t-1
、节点公钥pk
i
作为输入,得到字符串m
i
=r
t-1
||pk
i
,这里||表示级联;节点i随机选择计算l
i
=l
i
·
g=(x
i*
,y
i*
),其中x
*
为l的横坐标,y
*
为l的纵坐标,计算ξ
i
=x
i*
modq,modq,这里哈希函数h:得到e
i
=h(π
i
),之后计算σ
i
=l-1
(π
i
+ξ
·
sk
i
)mod n,节点i得到关于字符串m
i
的随机数e
i
的证明步骤1.3、分片链κ中的所有节点判断自己是否是候选验证节点;步骤1.4、验证节点选择:分片链κ中的节点首先对所有候选节点的证明元组进行验证,分片链κ中节点i的验证过程具体为:首先计算判断这里来自若不成立则关于候选节点i的验证失败,否则继续计算令ζ
i
=x
′
i
mod q,若ζ
i
=ξ
i
,则候选节点i验证成功,否则证明失败;之后,对验证通过的所有分片链κ中的候选节点的参考值{ref
i
}按照由大到小的顺序进行排序,前τ个参考值所代表的候选节点即为选择出的验证节点集合,τ为分片链κ选择的验证节点的数目;步骤1.5、验证集合形成:分片链κ中验证节点之间相互通信建立分片验证节点集合vn
t
并确认;步骤1.6、动态的子时段分片记账节点选择:在分片链κ中,验证节点集合vn
t
中的节点将时段epoch
t
选出的验证节点的可验证随机数组成一棵merkle树,叶子节点为每一个验证节点的可验证随机数,随机数的哈希值为叶节点的权重,这里哈希函数选择sha256;非叶子结点的权重为左右子树的权重之和,weight
δ
为该树节点的最大权重;之后,为epoch
t
的每一个子时段j,j=1,
…
,c-1分别选择记账节点,表示分片链κ在时段epoch
t
的第j个子时段的初始种子值,这里r
t-1
为上一时段的公共随机数;在每个子时段中,对构造的merkle树自顶向下遍历,将种子值输入伪随机函数p_
f(
·
):中生成一个随机数,如果生成的随机数小于左子树的权重则选择左子树,否则选择右子树,依次以上一层生成的随机数作为p_f(
·
)的输入生成新的随机数进行遍历,直到选择某一个叶子节点的可验证随机数为则节点i
j
被选中作为第j子时段的记账节点;步骤1.7、分片记账及区块头签名生成:记账节点i
j
收集分片矿池中的交易,生成交易区块之后,随机选择计算计算计算得到区块头签名ω
j
=(q
j
,μ
j
),这里t
j
=(epoch
t
||j);分片区块头的具体表示为:κ为分片链,t
j
=(epoch
t
||j)为分片时段和子时段索引号,hash
pre
为前一个验证区块的哈希值,sub-hash
pre
为分片上前一区块的哈希值,timestamp为分片区块生成的时间戳,为分片记账节点i
j
的可验证随机数和证明,merkle_root
j
为当前子时段收集交易的merkle树根;记账节点i
j
将区块和区块头签名ω
j
=(q
j
,μ
j
)广播至分片链κ,验证节点集合中的其余验证节点对区块合法性进行验证;当收到至少个验证节点对区块的正确验证结果时,记账节点将该区块记录在它所在的分片链上;步骤1.8、区块头打包:第c-1个子时段的记账节点生成区块同时收集epoch
t
中所有生成的区块头签名{ω
j
}
j=1,
…
,c-1
以及区块头的集合发送到验证链上。3.根据权利要求2所述的安全可扩展的分片区块链构造方法,其特征在于,步骤1.3具体按照以下步骤实施:步骤1.3.1、节点i拥有s
i
个标准单位的,表示为节点i拥有s
i
个权益值;之后,节点i用生成的e
i
计算步骤1.3.2、节点i将区间[0,1)划分为s
i
个连续区间的形式,在s
i
个权益值中选择恰好η个权益值的概率服从二项分布b(s
i
,p):其中,这里τ为分片链κ选择的验证节点的数目,表示分片链κ中拥有的所有的权益值数量;
步骤1.3.3、若且d
*
>0,d
*
∈{1,
…
,s
i-1},则表示节点i成为候选验证节点,且节点i恰好有d
*
个权益值被选中,进行步骤1.3.4;若d
*
=0,则表示该节点没有被选中,节点i退出验证节点选择过程;步骤1.3.4、候选验证节点i计算令候选节点i将关于字符串m
i
的随机数e
i
、证明参考值ref
i
,即证明元组<m
i
,e
i
,proof
i
,ref
i
>广播至分片链κ中。4.根据权利要求3所述的安全可扩展的分片区块链构造方法,其特征在于,步骤2具体按照以下步骤实施:步骤2.1、验证链成员形成:每一个分片链κ∈{1,
…
,k}的第c-1个子时段的记账节点组成验证链的成员节点,形成验证链成员集合cn
t
;每一个cn
t
中的节点打包当前epoch
t
生成的区块头及签名提交至验证链上;步骤2.2、分片区块批量验证及验证区块生成:将cn
t
中各个成员的可验证随机树形成merkle树,以seed=h(r
t-1
||epoch
t
)作为随机种子,按照步骤1.6的方法,选择出验证链的记账节点i
t
,记账节点i
t
收集所有cn
t
中的节点提交的区块头及签名对每一个分片链κ(κ∈{1,
…
,k})提交的计算这里ω
j
=(q
j
,μ
j
),之后验证若验证成功,则将中的每一个区块头作为验证区块的一个交易,生成验证区块vh
t
广播至验证链;步骤2.3、区块同步:各个分片链同步最新生成的验证区块,确保交易的全局一致。5.根据权利要求4所述的安全可扩展的分片区块链构造方法,其特征在于,步骤3具体按照以下步骤实施:步骤3.1、全局随机数更新:验证链的记账节点i
t
计算这里v
t
=head(vh
t
)为时段epoch
t
生成的验证区块的区块头,为验证链记账节点i
t
的公钥;验证链区块头的具体表达形式为:epoch
t
为时段索引号,hash
pre
为上一个验证区块的区块哈希值,timestamp为验证区块生成的时间戳,r
t
是为下一个时段epoch
t+1
生成的全局随机数,为验证链记账节点i
t
的可验证随机数和证明,merkle_root
t
为当前时段epoch
t
以分片区块头作为交易生成的merkle根;步骤3.2、时间同步:验证链的记账节点i
t
在将epoch
t
中的验证区块添加到验证链上时,执行网络时间同步协议,启动下一个时段epoch
t+1
,将全局随机数更新为r
t
,一个轮回结束;之后,以更新的全局随机数r
t
作为输入,从步骤1.2开始,进行下一个时段epoch
t+1
分片验证节点集合的选择,依次进行后续步骤,使得分片系统得以持续运行。
技术总结
本发明公开的安全可扩展的分片区块链构造方法,具体按照以下步骤实施:步骤1、共识协议设计,包括分片验证集合选择,动态的记账节点选择和分片区块生成;步骤2、验证链记账;步骤3、全局随机数更新和时间轮同步。本发明方法利用基于椭圆曲线的可验证随机函数(EC-VRF)构造新的分片共识协议实现高的交易处理性能,利用验证链保证交易的全局一致。利用验证链保证交易的全局一致。利用验证链保证交易的全局一致。
技术研发人员:
张倩 王尚平
受保护的技术使用者:
西安理工大学
技术研发日:
2022.08.19
技术公布日:
2022/11/18