一种基于层式有向无环图结构的拜占庭容错共识方法技术

技术编号:39719973 阅读:7 留言:0更新日期:2023-12-17 23:26
本发明专利技术公开了一种基于层式有向无环图结构的拜占庭容错共识方法,将参与共识的节点和有向无环图结构区块链中前一层的区块划分主节点组;第

【技术实现步骤摘要】
一种基于层式有向无环图结构的拜占庭容错共识方法


[0001]本专利技术涉及区块链的链结构及共识方法,尤其涉及一种基于层式有向无环图结构的拜占庭容错共识方法


技术介绍

[0002]区块链作为一种新型的去中心化技术,以其特有的链式结构和共识算法保证了数据的不可篡改

可追溯和公开透明,解决了分布式场景下数据的安全和可信问题

但这种线性结构和共识算法也成为了整个区块链系统的性能瓶颈,限制了交易处理速率的进一步增长

[0003]有向无环图技术
(Directed Acyclic Graph
,简称
DAG)
尝试通过对链结构本身的结构进行改进以加快共识过程
。DAG
结构的区块链天生具有并发能力,它可以同时接受多个交易或区块进行共识


DAG
结构的区块链中,每个区块都可以包含两个或多个前驱区块的哈希值,且多个节点可以同时独立的指向不同的前驱区块,并将打包后的区块广播至其他节点,提高了区块链的交易处理速度

[0004]但目前的
DAG
区块链系统普遍存在以下问题:
(1)DAG
区块链的拓扑图结构导致区块之间没有严格的顺序,很多
DAG
结构的区块链使用复杂的排序算法解决此问题,这对性能造成了极大的影响;
(2)
由于网络的异步性,节点本地的链结构视图是不完整的,多个节点可以基于互有差异的本地链结构视图产生新区块,这不利于形成全局统一的链结构;
(3)
联盟区块链是企业间合作使用最广泛的区块链形式,而目前公链上的
DAG
技术无法应用至联盟链中


技术实现思路

[0005]有鉴于现有技术的上述缺陷,本专利技术所要解决的技术问题是
(1)DAG
区块链的拓扑图结构导致区块之间没有严格的顺序,很多
DAG
结构的区块链使用复杂的排序算法解决此问题,这对性能造成了极大的影响;
(2)
由于网络的异步性,节点本地的链结构视图是不完整的,多个节点可以基于互有差异的本地链结构视图产生新区块,这不利于形成全局统一的链结构;
(3)
联盟区块链是企业间合作使用最广泛的区块链形式,而目前公链上的
DAG
技术无法应用至联盟链中

因此,本专利技术提供了一种基于层式有向无环图结构的拜占庭容错共识方法,以“层”结构来解决目前
DAG
区块链领域的区块全排序问题及节点间链结构一致性问题;以动态层宽控制机制保证面对不同速率的请求仍然能形成统一的链结构;提出层式流水线共识算法,将
DAG
技术与联盟链中的共识算法结合,并提高区块链系统的交易处理速率

[0006]为实现上述目的,本专利技术提供了一种基于层式有向无环图结构的拜占庭容错共识方法,包括以下步骤:
[0007](1)
将参与共识的节点和有向无环图结构区块链中前一层的区块按模运算划分为
K
个主节点组,各主节点组内的视图号及共识过程相互独立;
[0008](2)

k
组主节点收集
n

f
个副本节点对上一个区块的投票,通过门限签名技术将投票中的部分签名聚合为完整签名,并生成法定证书,该法定证书中包含上一区块的信息;
[0009](3)

k
组主节点根据层宽动态控制机制计算新区块的前驱引用及其在有向无环图结构中的位置;
[0010](4)

k
组主节点将法定证书和新区块组成待共识的消息,广播至各个副本节点;
[0011](5)

k
组副本节点接收主节点的消息,并对消息内容进行验证;
[0012](6)

k
组副本节点按照区块内包含的位置及索引信息,将区块预同步至本地链结构;
[0013](7)
若区块满足安全性规则,则向主节点发送对新区块的投票,更新本地链结构并执行该区块对应的
i
‑3层前驱引用区块内的指令;
[0014](8)
若消息验证不通过或区块不满足安全性规则,则第
k
组副本节点向第
k
组主节点发送更换新视图请求

[0015]进一步地,区块链采用有向无环图结构作为区块的组织形式,并对区块按照“层”进行划分;区块保持层间有序,层内区块按照哈希值进行排序;每个区块的后继引用数为固定值
D
in
,前驱引用数记为
D
out
。D
out
可以动态变化,其变化范围为
[1

MaxD
out
],其中
MaxD
out
为范围变化的上界,且
MaxD
out

D
in

[0016]进一步地,步骤
(1)
中参与共识的节点分配编号
P1,
P2,
...

P
N
,共
N
个节点,将节点分为
K
个主节点组,则对于节点
P
n
所属的组别为
T
k

P
n
mod K
,每个组的节点数量为
N/K
;同样地,设有向无环图结构中当前参与共识的层号为
l
i
,前一层为
l
i
‑1;
l
i
‑1层区块按哈希值排序后的编号为
B1,
B2,
...

B
M

T
k

B
m mod K
;区块与主节点组绑定,每个主节点组打包的区块只能引用该组对应的区块集合

[0017]进一步地,第
k
组主节点根据层宽动态控制机制计算新区块的前驱引用,具体是第
k
组主节点使用层宽动态控制机制计算新区块的前驱引用索引,设第
l
i
‑1层的宽度
|l
i
‑1|

w
i
‑1,
l
i
‑1层的总入度数为
w
i
‑1*D
in

l
i
‑1层中每个区块的剩余入度数记为列表的剩余入度数记为列表表示
l
i
‑1层中的第
q
个区块;当...

【技术保护点】

【技术特征摘要】
1.
一种基于层式有向无环图结构的拜占庭容错共识方法,其特征在于,包括以下步骤:
(1)
将参与共识的节点和有向无环图结构区块链中前一层的区块按模运算划分为
K
个主节点组,各主节点组内的视图号及共识过程相互独立;
(2)

k
组主节点收集
n

f
个副本节点对上一个区块的投票,通过门限签名技术将投票中的部分签名聚合为完整签名,并生成法定证书,该法定证书中包含上一区块的信息;
(3)

k
组主节点根据层宽动态控制机制计算新区块的前驱引用及其在有向无环图结构中的位置;
(4)

k
组主节点将法定证书和新区块组成待共识的消息,广播至各个副本节点;
(5)

k
组副本节点接收主节点的消息,并对消息内容进行验证;
(6)

k
组副本节点按照区块内包含的位置及索引信息,将区块预同步至本地链结构;
(7)
若区块满足安全性规则,则向主节点发送对新区块的投票,更新本地链结构并执行该区块对应的
i
‑3层前驱引用区块内的指令;
(8)
若消息验证不通过或区块不满足安全性规则,则第
k
组副本节点向第
k
组主节点发送更换新视图请求
。2.
如权利要求1所述的一种基于层式有向无环图结构的拜占庭容错共识方法,其特征在于,区块链采用有向无环图结构作为区块的组织形式,并对区块按照“层”进行划分;区块保持层间有序,层内区块按照哈希值进行排序;每个区块的后继引用数为固定值
D
in
,前驱引用数记为
D
out

D
out
可以动态变化,其变化范围为
[1

MaxD
out
]
,其中
MaxD
out
为范围变化的上界,且
MaxD
oui

D
in
。3.
如权利要求2所述的一种基于层式有向无环图结构的拜占庭容错共识方法,其特征在于,步骤
(1)
中参与共识的节点分配编号
P1,
P2,
...

P
N
,共
N
个节点,将节点分为
K
个主节点组,则对于节点
P
n
所属的组别为
T
k

P
n mod K
,每个组的节点数量为
N/K
;同样地,设有向无环图结构中当前参与共识的层号为
l
i
,前一层为
l
i
‑1;
l
i
‑1层区块按哈希值排序后的编号为
B1,
B2,
...

B
M

T
k

B
m mod K
;区块与主节点组绑定,每个主节点组打包的区块只能引用该组对应的区块集合
。4.
如权利要求3所述的一种基于层式有向无环图结构的拜占庭容错共识方法,其特征在于,第
k
组主节点根据层宽动态控制机制计算新区块的前驱引用,具体是第
k
组主节点使用层宽动态控制机制计算新区块的前驱引用索引,设第
l
i
‑1层的宽度
|l
i
‑1|

w
i
‑1,
l
i
‑1层的总入度数为
w
i
‑1*D
in

l
i
‑1层中每个区块的剩余入度数记为列表的剩余入度数记为列表表示
l
i
‑1层中的第
q
个区块;当
l
i
层生成一个新的区块时,第
k
组主节点根据当前的层宽和客户端请求速率利用
PID
控制算法计算该区块对应的出度主节点随机选择
l
i
‑1层中个第
k
组剩余入度数不为零且被标记为已写入状态的区块,对它们进行引用;这些被选择的区块记为集合
S
idx,k

S
idx

...

【专利技术属性】
技术研发人员:曾辉南郭明娟顾钱君宋安平周岑昊
申请(专利权)人:上海显现科技有限公司
类型:发明
国别省市:

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

1