当前位置: 首页 > 专利查询>北京大学专利>正文

一种区块链系统中的共识方法、区块链系统和共识节点技术方案

技术编号:36529552 阅读:16 留言:0更新日期:2023-02-01 16:11
本说明书实施例提供一种区块链系统中的共识方法、区块链系统和共识节点,包括:将本地交易池中维护的本地子链广播发送至其它的各个共识节点;以及,接收其它的各个共识节点广播发送的其本地交易池中维护的本地子链,并将接收到的本地子链在本地交易池中进行维护;从本地交易池中维护的各个本地子链中,获取子区块集合,并基于获取到的子区块集合创建提议区块;其中,所述提议区块包含与所述子区块集合中的各个子区块对应的子区块标识;将所述提议区块分别分发至其它的各个共识节点,以由各个共识节点分别从其本地交易池中维护的各个本地子链中,获取与所述子区块标识对应的各个子区块所包含的交易列表,并对获取到的交易列表进行共识处理。进行共识处理。进行共识处理。

【技术实现步骤摘要】
一种区块链系统中的共识方法、区块链系统和共识节点


[0001]本说明书实施例属于区块链
,尤其涉及一种区块链系统中的共识方法、区块链系统和共识节点。

技术介绍

[0002]区块链是一个去中心化的、无需信任第三方的分布式账本。区块链技术具有多方写入、公开透明、不可篡改等特点。区块链按照准入机制的不同,可以分为公链、联盟链以及私有链。联盟链具备访问控制功能,只有被授权的节点才可以加入联盟链网络,因此往往比公链网络更安全和高效,主要用于企业或机构间的相互合作。
[0003]基于区块链技术创建的由权威节点组成的联盟链,有利于打破数据孤岛,在各联盟成员之间形成可信记录存证,保障上链数据的不可篡改性,实现跨区域、跨部门的合作。
[0004]衡量区块链性能的一个指标是TPS(Transactions Per Second,每秒交易量)。TPS越高,交易在区块链上执行、验证和确认的速度就越快。早期公链的TPS普遍较低,远远不能满足需要。而联盟链的TPS,普遍比公链有很大提高,但是仍然显著低于中心化交易系统,尤其是去中心化程度比较高的联盟链。可见,区块链的性能是阻碍区块链技术大规模推广的瓶颈。
[0005]TPS是由两方面因素决定的:每个区块所包含的交易数目和整个系统发布区块的速度。每个区块包含的交易数目越多,出块速度越快,TPS就越高。但是,这两个参数不能随意增大。区块变大之后,传播到全网的时间也会增大。如果出块间隔过短,不足以让系统中的绝大多数节点收到新发布的区块,那么区块链的安全就会受到影响。对于以PoW共识协议为代表的公链来说,这种情况下会产生分叉,导致某些交易可能被回滚。联盟链,由于可以控制参与共识的节点的身份和数量,因此可以采用传统的分布式共识协议产生区块。通常情况下,联盟链的共识节点数量相对于公链来说要少很多,并且节点带宽条件较好,所以TPS也会比公链高很多。但是,联盟链中区块增大后传输延迟也会增大,对于拥有大规模节点(比如数百乃至上千个节点)的联盟链网络来说,区块增大会导致更长的交易执行时间,共识协议中验证签名的时间也会增加,同时节点间发送的消息的剧烈增长,也会引起网络的拥塞,进一步增大区块传输时间,降低达成共识的效率,也影响到下一区块的出块时间。
[0006]可见,无论是公链还是联盟链,对区块达成共识的效率,对区块链系统的TPS有很大影响。因此,如何提升对区块达成共识的效率,对于提升区块链系统的性能,具有非常重要的意义。

技术实现思路

[0007]本说明书提出一种区块链系统中的共识方法,所述方法应用于从所述区块链系统中参与共识的多个共识节点中选举出的主节点;其中,所述多个共识节点中的各个共识节点的本地交易池中,分别维护了本地子链;所述本地子链包括所述各个共识节点基于本地交易池中存储的交易创建的若干个子区块;包括:
[0008]将本地交易池中维护的本地子链广播发送至其它的各个共识节点;以及,接收其它的各个共识节点广播发送的其本地交易池中维护的本地子链,并将接收到的本地子链在本地交易池中进行维护;
[0009]从本地交易池中维护的各个本地子链中,获取子区块集合,并基于获取到的子区块集合创建提议区块;其中,所述提议区块包含与所述子区块集合中的各个子区块对应的子区块标识;
[0010]将所述提议区块分别分发至其它的各个共识节点,以由各个共识节点分别从其本地交易池中维护的各个本地子链中,获取与所述子区块标识对应的各个子区块所包含的交易列表,并对获取到的交易列表进行共识处理。
[0011]本说明书还提出一种区块链系统中的共识方法,所述区块链系统中参与共识的多个共识节点中包括选举出的主节点;所述方法应用于所述多个共识节点中除了所述主节点以外的任一共识节点;其中,所述多个共识节点中的各个共识节点的本地交易池中,分别维护了本地子链;所述本地子链包括所述各个共识节点基于本地交易池中存储的交易创建的若干个子区块;包括:
[0012]将本地交易池中维护的本地子链广播发送至其它的各个共识节点;以及,接收其它的各个共识节点广播发送的其本地交易池中维护的本地子链,并将接收到的本地子链在本地交易池中进行维护;
[0013]获取所述主节点传输的提议区块;其中,所述提议区块为所述主节点基于从其本地交易池中维护的各个子链中获取到的子区块集合创建的提议区块;所述提议区块包含与所述子区块集合中的各个子区块对应的子区块标识;
[0014]从本地交易池中维护的各个本地子链中,获取与所述子区块标识对应的各个子区块所包含的交易列表,并对获取到的交易列表进行共识处理。
[0015]本说明书还提出一种区块链系统,包括多个共识节点;所述多个共识节点包括选举出的主节点;所述多个共识节点中的各个共识节点的本地交易池中,分别维护了本地子链;所述本地子链包括所述各个共识节点基于本地交易池中存储的交易创建的若干个子区块;其中:
[0016]主节点,将本地交易池中维护的本地子链广播发送至其它的各个共识节点;以及,接收其它的各个共识节点广播发送的其本地交易池中维护的本地子链,并将接收到的本地子链在本地交易池中进行维护;从本地交易池中维护的各个本地子链中,获取子区块集合,并基于获取到的子区块集合创建提议区块;其中,所述提议区块包含与所述子区块集合中的各个子区块对应的子区块标识;将所述提议区块分别分发至其它的各个共识节点;
[0017]除了所述主节点以外的其它共识节点,将本地交易池中维护的本地子链广播发送至其它的各个共识节点;以及,接收其它的各个共识节点广播发送的其本地交易池中维护的本地子链,并将接收到的本地子链在本地交易池中进行维护;获取所述主节点传输的提议区块,从本地交易池中维护的各个本地子链中,获取与所述子区块标识对应的各个子区块所包含的交易列表,并对获取到的交易列表进行共识处理。
[0018]本说明书还提出一种区块链系统中的共识节点,所述区块链系统包括多个共识节点;所述多个共识节点包括选举出的主节点;所述多个共识节点中的各个共识节点的本地交易池中,分别维护了本地子链;所述本地子链包括所述各个共识节点基于本地交易池中
存储的交易创建的若干个子区块;包括:
[0019]第一发送模块,将本地交易池中维护的本地子链广播发送至其它的各个共识节点;以及,接收其它的各个共识节点广播发送的其本地交易池中维护的本地子链,并将接收到的本地子链在本地交易池中进行维护;
[0020]创建模块,从本地交易池中维护的各个本地子链中,获取子区块集合,并基于获取到的子区块集合创建提议区块;其中,所述提议区块包含与所述子区块集合中的各个子区块对应的子区块标识;
[0021]传输模块,将所述提议区块分别分发至其它的各个共识节点,以由各个共识节点分别从其本地交易池中维护的各个本地子链中,获取与所述子区块标识对应的各个子区块所包含的交易列表,并对获取到的交易列表进行共识处理。
[0022]本说明书还提出一种区块链系统中的共识节点,所述区块链系统包括多个共识节点;所述多个共识本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种区块链系统中的共识方法,所述方法应用于从所述区块链系统中参与共识的多个共识节点中选举出的主节点;其中,所述多个共识节点中的各个共识节点的本地交易池中,分别维护了本地子链;所述本地子链包括所述各个共识节点基于本地交易池中存储的交易创建的若干个子区块;包括:将本地交易池中维护的本地子链广播发送至其它的各个共识节点;以及,接收其它的各个共识节点广播发送的其本地交易池中维护的本地子链,并将接收到的本地子链在本地交易池中进行维护;从本地交易池中维护的各个本地子链中,获取子区块集合,并基于获取到的子区块集合创建提议区块;其中,所述提议区块包含与所述子区块集合中的各个子区块对应的子区块标识;将所述提议区块分别分发至其它的各个共识节点,以由各个共识节点分别从其本地交易池中维护的各个本地子链中,获取与所述子区块标识对应的各个子区块所包含的交易列表,并对获取到的交易列表进行共识处理。2.如权利要求1所述的方法,所述将本地交易池中维护的本地子链广播发送至其它的各个共识节点之前,还包括:周期性的从本地交易池中获取交易列表,并基于获取到的交易列表创建子区块;将创建的子区块与本地交易池中维护的本地子链上的最新的子区块进行链接。3.如权利要求2所述的方法,所述提议区块的成块周期对应的周期时长,为所述子区块的成块周期对应的周期时长的整数倍。4.如权利要求2所述的方法,将本地交易池中维护的本地子链广播发送至其它的各个共识节点,包括:周期性的将所述本地子链上新增的子区块广播发送至其它的各个共识节点;接收其它的各个共识节点广播发送的其本地交易池中维护的本地子链,包括:接收其它的各个共识节点周期性的广播发送的所述本地子链上新增的子区块。5.如权利要求1所述的方法,将接收到的本地子链在本地交易池中进行维护之前,所述方法还包括:对接收到的本地子链上包含的子区块进行合法性验证,并在合法性验证通过之后,将接收到的本地子链在本地交易池中进行维护。6.如权利要求5所述的方法,所述子区块对应的数据结构,包括:子区块头,交易列表字段;其中,所述交易列表字段,用于填充该子区块包含的交易列表;所述子区块头,包括:Previous Hash字段,用于填充该子区块在其所属的本地子链中链接的上一子区块的hash值;高度字段,用于填充表示该子区块在其所属的本地子链中的区块高度的子区块标识;Merkle Root字段,用于填充基于该子区块包含的交易列表创建的Merkle树的根节点的hash值;指示列表字段:用于填充在创建当前子区块的时刻,本地交易池中存储的与其它的各个共识节点对应的本地子链上的最新子区块的区块高度构成的高度列表。
7.如权利要求6所述的方法,如果所述区块链系统所采用的共识算法为leader

based的拜占庭共识算法:所述子区块对应的数据格式中,还包括:签名字段,用于填充子区块的创建者对该子区块的签名;针对所述子区块进行合法性验证,包括:针对所述子区块的签名字段中填充的签名进行验证;如果针对所述签名的验证通过,进一步执行下一步的验证;反之,确定针对所述子区块的合法性验证未通过;验证本地交易池中是否存储了所述子区块的Previous Hash字段中填充的hash值所指示的该子区块链接的上一子区块;如果是,进一步执行下一步的验证;反之,进一步向创建所述上一子区块的共识节点获取该上一子区块;验证本地交易池中是否存储了与所述子区块链接了相同的上一子区块的其它子区块;如果是,确定针对所述子区块的合法性验证未通过;反之,进一步执行下一步的验证;验证该子区块的指示列表字段中填充的高度列表中包含的与其它的各个共识节点对应的区块高度,相较于该子区块链接的上一子区块的指示列表字段中填充的高度列表中包含的与其它的各个共识节点对应的区块高度是否递增;如果是,进一步执行下一步的验证;反之,确定针对所述子区块的合法性验证未通过;对该子区块包含的交易列表中的每笔交易的签名进行验证;如果针对所述每笔交易的签名的验证均通过,进一步执行下一步的验证;反之,确定针对所述子区块的合法性验证未通过;验证基于该子区块包含的交易列表创建的Merkle树的根节点的hash值,与该子区块的Merkle Root字段中填充的hash值是否相同;如果是,确定针对所述子区块的合法性验证通过;反之,确定针对所述子区块的合法性验证未通过。8.如权利要求7所述的方法,所述方法还包括:如果本地交易池中存储了与所述子区块,链接了相同的上一子区块的其它子区块,进一步确定所述子区块和所述其它子区块的创建者,并将所述创建者作为恶意节点添加至黑名单;以及,将所述子区块和所述其它子区块,广播发送至其它的各个共识节点,以使所述其它的各个共识节点在验证所述子区块和所述其它子区块,链接了相同的上一子区块时,进一步确定所述子区块和所述其它子区块的创建者,并将所述创建者作为恶意节点添加至黑名单;或者,将所述创建者广播发送至其它的各个共识节点,以使所述其它的各个共识节点将所述创建者作为恶意节点添加至黑名单;其中,所述提议区块中不包含由所述黑名单中维护的恶意节点创建的子区块。9.如权利要求6所述的方法,如果所述区块链系统所采用的共识算法为leader

based的非拜占庭共识算法:针对所述子区块进行合法性验证,包括:验证本地交易池中是否存储了所述子区块的Previous Hash字段中填充的hash值所指示的该子区块链接的上一子区块;如果是,进一步执行下一步的验证;反之,进一步向创建所述上一子区块的共识节点获取该上一子区块;验证该子区块的指示列表字段中填充的高度列表中包含的与其它的各个共识节点对
应的区块高度,相较于该子区块链接的上一子区块的指示列表字段中填充的高度列表中包含的与其它的各个共识节点对应的区块高度是否递增;如果是,进一步执行下一步的验证;反之,确定针对所述子区块的合法性验证未通过;验证基于该子区块包含的交易列表创建的Merkle树的根节点的hash值,与该子区块的Merkle Root字段中填充的hash值是否相同;如果是,确定针对所述子区块的合法性验证通过;反之,确定针对所述子区块的合法性验证未通过。10.如权利要求1所述的方法,将所述提议区块分别分发至其它的各个共识节点,包括:基于所述区块链系统采用的共识协议支持的提议区块分发机制,将所述提议区块广播发送至其它的各个共识节点。11.如权利要求6所述的方法,从本地交易池中维护的各个本地子链中,获取子区块集合,包括:分别确定本地交易池中维护的各个本地子链中的最新子区块,并进一步获取所述各个本地子链中的最新子区块的子区块头中的所述指示列表字段中填充的所述高度列表;基于获取到的高度列表确定所述主节点的本地交易池中维护的各个子链中上的最新子区块的区块高度,和所述其它的各个共识节点的本地交易池中维护的各个子链上的最新子区块的区块高度之间的公共高度,并从所述主节点的本地交易池中维护的各个本地子链中,分别获取区块高度不大于所述公共高度的子区块集合。12.如权利要求11所述的方法,基于获取到的高度列表确定所述主节点的本地交易池中维护的各个子链中上的最新子区块的区块高度,和所述其它的各个共识节点的本地交易池中维护的各个子链上的最新子区块的区块高度之间的公共高度,并从所述主节点的本地交易池中维护的各个本地子链中,分别获取区块高度不大于所述公共高度的子区块集合,包括:基于获取到的高度列表确定所述主节点的本地交易池和所述其它的各个共识节点的本地交易池中,维护的各个本地子链中的最新子区块的区块高度最大的N个共识节点;确定所述N个共识节点的本地交易池中维护的各个本地子链上的最新子区块的区块高度之间的公共高度;从所述主节点的本地交易池中维护的各个本地子链中,分别获取区块高度不大于所述公共高度的子区块集合;其中,所述N的取值为所述区块链系统所采用的共识算法针对参与共识的共识节点的最大容错节点数。13.如权利要求12所述的方法,如果所述区块链系统所采用的共识算法为leader

based的拜占庭共识算法,所述区块链系统参与共识的共识节点的总数为3f+1,所述N的取值为2f+1。14.如权利要求13所述的方法,所述共识算法包括PBFT共识算法或者HotStuff共识算法。15.如权利要求12所述的方法,如果所述区块链系统所采用的共识算法为leader

based的非拜占庭共识算法,所述区块链系统参与共识的共识节点的总数为f,所述N的取值为f/2+1。16.如权利要求15所述的方法,所述共识算法包括RAFT共识算法或者PAXOS共识算法。
17.如权利要求1所述的方法,其中,所述提议区块中不包括交易列表;所述提议区块对应的数据结构,包括:子区块集合字段,用于填充该提议区块包含的子区块集合中的各个子区块的子区块标识;Merkle Root字段,用于填充基于所述子区块集合中的各个子区块包含的交易列表创建的Merkle树的根节点的hash值。18.一种区块链系统中的共识方法,所述区块链系统中参与共识的多个共识节点中包括选举出的主节点;所述方法应用于所述多个共识节点中除了所述主节点以外的任一共识节点;其中,所述多个共识节点中的各个共识节点的本地交易池中,分别维护了本地子链;所述本地子链包括所述各个共识节点基于本地交易池中存储的交易创建的若干个子区块;包括:将本地交易池中维护的本地子链广播发送至其它的各个共识节点;以及,接收其它的各个共识节点广播发送的其本地交易池中维护的本地子链,并将接收到的本地子链在本地交易池中进行维护;获取所述主节点传输的提议区块;其中,所述提议区块为所述主节点基于从其本地交易池中维护的各个子链中获取到的子区块集合创建的提议区块;所述提议区块包含与所述子区块集合中的各个子区块对应的子区块标识;从本地交易池中维护的各个本地子链中,获取与所述子区块标识对应的各个子区块所包含的交易列表,并对获取到的交易列表进行共识处理。19.如权利要求18所述的方法,所述将本地交易池中维护的本地子链广播发送至其它的各个共识节点之前,还包括:周期性的从本地交易池中获取交易列表,并基于获取到的交易列表创建子区块;将创建的子区块与本地交易池中维护的子链上的最新的子区块进行链接。20.如权利要求19所述的方法,所述提议区块的成块周期对应的周期时长,为所述子区块的成块周期对应的周期时长的整数倍。21.如权利要求19所述的方法,将本地交易池中维护的本地子链广播发送至其它的各个共识节点,包括:周期性的将所述本地子链上新增的子区块广播发送至其它的各个共识节点;接收其它的各个共识节点广播发送的其本地交易池中维护的本地子链,包括:接收其它的各个共识节点周期性的广播发送的所述本地子链上新增的子区块。22.如权利要求18所述的方法,将接收到的本地子链在本地交易池中进行维护之前,所述方法还包括:对接收到的本地子链上包含的子区块进行合法性验证,并在合法性验证通过之后,将接收到的本地子链在本地交易池中进行维护。23.如权利要求22所述的方法,所述子区块对应的数据结构包括:子区块头,交易列表字段;其中,所述交易列表字段,用于填充该子区块包含的交易列表;所述子区块头,包括:Previous Hash字段,用于填充该子区块在其所属的本地子链中链接的上一子区块的
hash值;高度字段,用于填充表示该子区块在其所属的本地子链中的区块高度的子区块标识;Merkle Root字段,用于填充基于该子区块包含的交易列表创建的Merkle树的根节点的hash值;指示列表字段:用于填充在创建当前子区块的时刻,本地交易池中存储的与其它的各个共识节点对应的本地子链上的最新子区块的区块高度构成的高度...

【专利技术属性】
技术研发人员:虎振兴徐文博石杰丁慧曾超丁秋雨管圣杰
申请(专利权)人:北京大学
类型:发明
国别省市:

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

1