CN113642019B - 一种双层分组拜占庭容错共识方法及系统 - Google Patents

一种双层分组拜占庭容错共识方法及系统 Download PDF

Info

Publication number
CN113642019B
CN113642019B CN202110936879.0A CN202110936879A CN113642019B CN 113642019 B CN113642019 B CN 113642019B CN 202110936879 A CN202110936879 A CN 202110936879A CN 113642019 B CN113642019 B CN 113642019B
Authority
CN
China
Prior art keywords
nodes
committee
group
node
block
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202110936879.0A
Other languages
English (en)
Other versions
CN113642019A (zh
Inventor
陈宇
贾连兴
周明
曾广军
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
National University of Defense Technology
Original Assignee
National University of Defense Technology
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by National University of Defense Technology filed Critical National University of Defense Technology
Priority to CN202110936879.0A priority Critical patent/CN113642019B/zh
Publication of CN113642019A publication Critical patent/CN113642019A/zh
Application granted granted Critical
Publication of CN113642019B publication Critical patent/CN113642019B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/602Providing cryptographic facilities or services
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/30Authentication, i.e. establishing the identity or authorisation of security principals
    • G06F21/45Structures or tools for the administration of authentication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/64Protecting data integrity, e.g. using checksums, certificates or signatures

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • General Health & Medical Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Hardware Redundancy (AREA)

Abstract

本发明公开了一种双层分组拜占庭容错共识方法及系统。该方法包括步骤:S1,确定节点分组;S2,对于每组节点,从中选取部分节点作为委员会节点,组成该组的委员会,除委员会节点以外的剩余节点作为共用节点,从委员会节点中选取每组的主节点;S3,搭建区块链网络;S4,若某一组委员会接收到提案请求,该组的主节点根据提案请求生成区块并发送给该组其他委员会节点进行第一轮共识,若第一轮共识通过则生成初始区块并发送给各组的共用节点;S5,各组的共用节点对该初始区块进行第二轮共识,若第二轮共识通过则将该初始区块上链并保存在本地账本中。本发明采用双层分组共识结构,在保障低通信复杂度的前提下提升了系统鲁棒性。

Description

一种双层分组拜占庭容错共识方法及系统
技术领域
本发明属于区块链技术领域,更具体地,涉及一种双层分组拜占庭容错共识方法及系统。
背景技术
现有技术中,拜占庭容错共识方法主要有以下几种方式:
现有技术中提出了一种实用拜占庭容错协议(Practical Byzantine FaultTolerance,PBFT),是最常用的分布式共识方法,该方法通过节点间互相通信去除拜占庭节点恶意行为的影响,同时使用预准备、准备、承诺三个阶段保证节点的一致性。然而,节点间两两交互使得PBFT的通信复杂度高达O(n2),当节点数量较多时易导致网络堵塞,可扩展性较差。
为了降低PBFT的通信复杂度,现有技术中还提出了一种可扩展拜占庭容错协议(Scalable Byzantine Fault Tolerance,SBFT),该协议使用门限签名技术将共识过程的通信复杂度降低为O(n)。
但在上述方法中,区块链主节点的身份是公开的,极易受到敌方发起的分布式拒绝服务攻击,且门限签名的合成与转发高度依赖主节点的可靠性,若主节点为拜占庭节点或被敌方控制将危害系统安全性。针对这一问题,现有技术中采用环签名技术隐匿提案生成过程中主节点的身份,模糊敌方攻击目标。同时,通过在多轮投票中合成代表法定人数投票意愿的门限签名,提升共识算法的鲁棒性。但该方法为了防止主节点作恶,必须选择至少f+1个最小共识单元,使得通信复杂度提升为O((f+1)n)。
综上,对于拜占庭容错协议的研究主要分为两个方向:第一个方向是降低共识过程的通信复杂度和系统开销。第二个方向是提升系统的抗攻击能力以及鲁棒性。但目前尚缺乏同时兼顾通信复杂度与系统鲁棒性的方法。且上述研究具有较高的通用性,未针对特定场景或应用进行优化,算法性能仍有较大提升空间。
发明内容
针对现有技术的至少一个缺陷或改进需求,本发明提供了一种双层分组拜占庭容错共识方法及系统,采用双层分组共识结构,在保障低通信复杂度的前提下提升了系统鲁棒性。
为实现上述目的,按照本发明的第一方面,提供了一种双层分组拜占庭容错共识方法,包括步骤:
S1,确定节点分组;
S2,对于每组节点,从中选取部分节点作为委员会节点,组成该组的委员会,除委员会节点以外的剩余节点作为共用节点,从委员会节点中选取每组的主节点;
S3,根据分组和选取情况搭建区块链网络;
S4,若某一组委员会接收到提案请求,该组的主节点根据提案请求生成区块并发送给该组其他委员会节点进行第一轮共识,若第一轮共识通过则生成初始区块并发送给各组的共用节点;
S5,各组的共用节点对该初始区块进行第二轮共识,若第二轮共识通过则将该初始区块上链并保存在本地账本中。
优选的,每组的共用节点与其所属组的委员会节点或其他组的委员会节点通信。
优选的,对于每组节点,采用随机轮值方法从委员会节点中选取主节点。
优选的,不同组的委员会节点并行进行各自区块的生成和发送。
优选的,双层分组拜占庭容错共识方法还包括步骤S6:在进行容错共识时,生成每组节点的信誉列表,若某一组委员会进行第一轮共识失败,根据该信誉列表为该组重新选取委员会节点并启动视图转换协议。
优选的,S3包括子步骤:
使用非对称加密算法为每个节点生成公钥、私钥对,用于节点的身份认证和数字签名;使用基于BLS的门限签名为每个节点生成门限签名私钥和系统公钥,用于初始区块确认阶段的投票;通过证书授权中心为节点颁发相应的公钥证书;
使用HyperledgerFabric搭建区块链网络,根据分组和选取情况对区块链网络进行配置,其中,使用组织实现节点的分组,每个组织包含对应分组的所有节点,将组织中的委员会节点设置为锚节点。
优选的,S4包括子步骤:
S41,若第i组委员会在t时刻收到第k个客户端的提案请求,提案请求格式为<‘request’,o,t,k>,其中‘request’为提案标识符,o为操作,第i组的主节点验证操作o是否合法;
S42,合法验证通过后,第i组的主节点将提案内容打包成区块B,向该组其它委员会节点发送预准备消息,预准备消息格式为<‘pre-prepare’,v,h,H(B),B>,其中,‘pre-prepare’为预准备消息标识符,v为当前视图编号,h为区块高度,H(B)为区块摘要,区块摘要通过哈希函数计算得到;
S43,对于第i组委员会中的任意节点j,当收到预准备消息后,检查消息签名是否正确,视图编号以及区块高度是否一致,检查通过后,向该组委员会广播准备消息,准备消息格式为<‘prepare’,v,h,H(B),j>j,其中,‘prepare’为准备消息标识符,j为该节点的序号;
S44,当第i组委员会中的节点收到预设阈值以上个准备消息后,向委员会广播承诺消息,消息格式为<‘commit’,v,h,H(B),j>j,其中,‘commit’为承诺消息标识符;
S45,当第i组委员会中的节点收到预设阈值以上个承诺消息,则第一轮共识完成,生成初始区块,初始区块记为Binit,Binit=B。
优选的,S5包括子步骤:
S51,第i组委员会将生成的初始区块广播至共用节点群,第i组委员会中的所有委员会节点都参与广播;
S52,当某一共用节点收到预设阈值以上个有效的初始区块后,使用门限签名私钥对该初始区块进行签名,并将签名后的初始区块广播至第i组委员会,第i组委员会节点也使用门限签名私钥对区块签名,并互相发送;
S53,当第i组委员会任意节点收到了至少2f+1个有效的门限签名之后,该节点将收到的签名合成为聚合签名,同时将其广播至第i组的其他委员会节点以及各组的共用节点,其中f为拜占庭节点个数;
S54,第i组的其他委员会节点以及各组的共用节点收到了有效的聚合签名之后,将区块保存于本地账本;
S55,共用节点转发聚合签名和区块到其它组委员会,每个共用节点仅负责向其所属分组的委员会转发聚合签名和区块;
S56,其它组委员会节点收到有效的聚合签名之后,将区块保存于本地账本。
优选的,S6包括子步骤:
S61,正常容错共识时,根据每个节点诚实或者恶意行为的次数进行计分并生成信誉列表,该列表由所有节点共同维护,记录于区块链中;
S62,当第i组委员会的提案在共识过程中出现拜占庭故障时,所有分组停止正在进行中的共识提案;
S63,从第i组的高信誉节点中随机抽取c个组成新委员会;
S64,新委员会节点向各组的共用节点广播视图转换消息,消息格式为<‘view-change’,vold,vnew,h,H(Bc),Bc>,其中,‘view-change’为视图转换消息标识符,vold和vnew分别为当前视图编号和新视图编号,Bc为节点本地账本中保存的最新区块,H(Bc)为Bc的摘要,h为区块高度;
S65,共用节点收到视图转换消息后验证最新区块、视图编号以及区块高度是否一致,若验证通过则执行步骤S66,否则拒绝新委员会的视图转换请求;
S66,共用节点更新视图编号,使用门限签名私钥对视图转换确认消息,视图转换确认消息格式为<‘view-change-confirm’,vnew,h,Bc>签名,‘view-change-confirm’为视图转换确认消息标识符,并广播至新委员会;
S67,新委员会节点收到至少2f+1条签名消息后,合成聚合签名并广播至共用节点群,其中f为拜占庭节点个数。
S68,共用节点将聚合签名转发至所属的委员会节点,令其更新视图编号和最新区块。
按照本发明的第二方面,提供了一种双层分组拜占庭容错共识系统,包括多组节点;
对于每组节点,其中,部分节点为委员会节点,组成该组的委员会,除委员会节点以外的剩余节点作为共用节点,主节点从委员会节点中选取;
若某一组委员会接收到提案请求,该组的主节点根据提案请求生成区块并发送给该组其他委员会节点进行第一轮共识,若第一轮共识通过则生成初始区块并发送给各组的共用节点;
各组的共用节点对该初始区块进行第二轮共识确认,若第二轮共识通过则将该初始区块上链并保存在本地账本中。
总体而言,本发明与现有技术相比,具有有益效果:
(1)本发明采用分组思想,对区块链节点进行分组。每组仅选取少量节点组成委员会与其它组节点进行通信,降低通信复杂度。一般地,同组中节点通信的质量高于不同组节点互相通信的质量,减少不同组节点之间的通信次数可以降低平均通信延迟。
(2)为了避免主节点受到分布式拒绝服务攻击,导致共识过程失败,本发明采用分层共识结构。每组的委员会节点作为第一层共识节点,通过第一轮共识产生初始区块。各组其它节点一起作为第二层共识节点,对初始区块进行第二轮共识。第二层共识节点不参与第一轮共识过程,主节点身份藏匿于委员会节点之中,同时采用随机轮值的方式更换每一轮发起提案的主节点,降低主节点被攻击的概率。且第二层共识节点中包含不同组的节点,即使某组超过三分之一以上的节点被敌方入侵,也可以通过其它组节点对应的诚实节点达成共识,提升了系统的鲁棒性。
(3)在本发明提出的双层分组共识结构下,各组节点可以并行发布不同的区块,进行流水线式的并行处理,进一步提升了共识效率。
附图说明
图1是本发明实施例的双层分组拜占庭容错共识方法的流程图;
图2是本发明实施例的多组节点的双层分组结构示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。
本发明涉及的术语解释如下:
RSA(Rivest-Shamir-Adleman)加密算法:一种使用不同的加密密钥与解密密钥,“由已知加密密钥推导出解密密钥在计算机上是不可行的”密码体制。
BLS(Boneh-Lynn-Shacham)签名算法:一种可以实现签名/密钥聚合的算法,可以将多个签名/密钥聚合成一个签名/密钥。
HyperledgerFabric:一个模块化的分布式账本解决方案支撑平台。
本发明实施例的双层分组拜占庭容错共识方法包括步骤:
S1,确定节点分组;
S2,对于每组节点,从中选取部分节点作为委员会节点,组成该组的委员会,除除委员会节点以外的剩余节点作为共用节点,从委员会节点中选取每组的主节点;
S3,搭建区块链网络;
S4,初始区块生成,即若某一组委员会接收到提案请求,该组的主节点根据提案请求生成区块并发送给该组其他委员会节点进行第一轮共识,若第一轮共识通过则生成初始区块并发送给各组的共用节点;
S5,初始区块确认,各组的共用节点对该初始区块进行第二轮共识,若第二轮共识通过则将该初始区块上链并保存在本地账本中。
进一步地,每组的共用节点负责与其所属组的委员会节点或其他组的委员会节点通信。
进一步地,对于每组节点,采用随机轮值方法从委员会节点中选取主节点。
进一步地,不同组的委员会节点可并行进行各自区块的生成和发送。
本发明实施例可以应用在多组设备协同的应用场景中,例如无人机集群、舰队集群、车辆编队等。在这些场景中,会将设备分成多个编队。
以下以无人机集群作为示例,本发明实施例的双层分组拜占庭容错共识方法应用在无人机集群,具有以下优点:
(1)在无人机集群中,无人机集群协同过程中通常会进行编队,本发明采用分组思想,根据无人机编队结果对区块链节点进行分组。每组仅选取少量节点组成委员会与其它组节点进行通信,降低通信复杂度。一般地,同编队中无人机通信的质量高于不同编队无人机互相通信的质量,减少不同编队无人机之间的通信次数可以降低平均通信延迟。
(2)为了避免主节点受到分布式拒绝服务攻击,导致共识过程失败,本发明采用分层共识结构。每组的委员会节点作为第一层共识节点,通过第一轮共识产生初始区块。各组其它节点一起作为第二层共识节点,对初始区块进行第二轮共识。第二层共识节点不参与第一轮共识过程,主节点身份藏匿于委员会节点之中,同时采用随机轮值的方式更换每一轮发起提案的主节点,降低主节点被攻击的概率。且第二层共识节点中包含不同编队无人机对应的节点,即使某个编队中超过三分之一以上的无人机被敌方入侵,也可以通过其它编队无人机对应的诚实节点达成共识,提升了系统的鲁棒性。
(3)在本发明提出的双层分组共识结构下,各编队无人机可以同时发布不同的区块,进行流水线式的并行处理,进一步提升了无人机集群系统的共识效率。
在一个实施例中,本发明实施例的双层分组拜占庭容错共识方法包括步骤:
如图1所示,本发明实施例的具体步骤如下:
S1,节点分组:无人机集群中每一架无人机对应一个节点,根据无人机集群的编队情况对节点进行分组,每组包含对应编队的所有无人机节点。
S2,委员会选取:对于每个组,从中随机选取一部分节点作为初始的委员会节点,组成该组的委员会。每组剩余的节点作为共用节点。经过分组和委员会选取后,形成图2所示的双层分组结构。
S3,区块链网络搭建:根据无人机节点形成的双层分组结构,构建区块链网络。
优选的,步骤S3包括以下子步骤:
S31,使用非对称加密算法RSA为每个节点生成公钥、私钥对,用于节点的身份认证和数字签名。使用基于BLS的门限签名为每个节点生成门限签名私钥和系统公钥,用于初始区块确认阶段的投票,降低通信复杂度。通过可信的证书授权中心为节点颁发相应的公钥证书。
S32,使用Hyperledger Fabric搭建区块链网络,根据无人机节点形成的双层分组结构对区块链网络进行配置。其中,使用组织实现节点的分组,每个组织包含对应分组的所有节点。同时,将组织中的委员会节点设置为锚节点。
S4,初始区块生成:当客户端向区块链网络中的某个组织发送提案请求后,该组织的委员会节点负责将提案内容打包生成区块并进行第一轮共识。
优选的,步骤S4包括以下子步骤:
S41,当第i组委员会在t时刻收到第k个客户端的提案请求<‘request’,o,t,k>后,主节点验证操作o是否合法。
S42,验证通过后,主节点将提案内容打包成区块B,向该组除主节点以外的其它委员会节点发送预准备消息<‘pre-prepare’,v,h,H(B),B>,该消息包含预准备消息标识符‘pre-prepare’,当前视图编号v,区块高度h,区块B以及区块摘要H(B),区块摘要通过哈希函数H(·)计算得到。
S43,对于第i组委员会中的任意节点,当收到预准备消息后,检查消息签名是否正确,视图编号以及区块高度是否一致,检查通过后,向委员会广播准备消息,消息格式为<‘prepare’,v,h,H(B),j>j,其中,j为该节点的序号。
S44,当第i组委员会中的节点收到2c/3以上个准备消息后,向委员会广播承诺消息,消息格式为<‘commit’,v,h,H(B),j>j,其中,c为第i组委员会中的节点数量。特别说明的是,2c/3这个阈值可以根据需要灵活调整,以下同理。
S45,当第i组委员会中的节点收到2c/3以上个承诺消息,则第一轮共识完成,生成初始区块Binit=B。
步骤S4能有效降低主节点被攻击的风险,单层共识算法,如PBFT、SBFT等,主节点身份被区块链网络所有节点知晓,若区块链网络中包含恶意节点,则该节点可以联合敌手对主节点发起分布式拒绝服务攻击,导致主节点瘫痪,使其不能生成区块。本发明通过分层思想将共识过程拆分为两个阶段,即初始区块生成和初始区块确认。初始区块生成仅涉及到委员会节点,其它节点在这个过程中并不知晓主节点的身份,主节点身份仅有少量委员会节点知晓,因此,被攻击的概率大大降低,系统的鲁棒性提升。
S5,初始区块确认:当初始区块生成之后,对其进行第二轮共识确认,通过两轮共识之后,区块上链保存于本地账本。
优选的,步骤S5包括以下子步骤:
S51,第i组委员会将生成的初始区块Binit广播至共用节点群,为了避免主节点可能为恶意节点,伪造初始区块的情况,委员会中的所有节点都参与广播。
S52,当某一共用节点收到至少2c/3+1个有效的初始区块Binit后,使用门限签名私钥对该区块进行签名,并将签名后的区块广播至第i组委员会。第i组委员会节点也使用门限签名私钥对区块签名,并互相发送。
S53,当第i组委员会任意节点收到了至少2f+1个有效的门限签名之后,该节点将收到的签名合成为聚合签名,同时将其广播至第i组的其他委员会节点以及各组的共用节点,其中f为拜占庭节点个数。拜占庭节点指系统中出现故障或存在恶意行为的节点。
S54,第i组的其他委员会节点以及各组的共用节点收到了有效的聚合签名之后,将区块保存于本地账本。
S55,共用节点将转发聚合签名和区块到其它组委员会,为了降低通信延时,每个共用节点仅负责向所属分组的委员会转发聚合签名和区块。
S56,其它组委员会节点收到有效的聚合签名之后,将区块保存于本地账本。
步骤S5能有效降低系统延迟,未对节点进行分组的共识算法,如PBFT,不论节点之间的通信环境好坏,都要进行两两之间的通信,而通常无人机集群中,属于同一编队的无人机通信环境较好,通信延迟低,而属于不同编队的无人机通信环境较差,通信延迟高,本发明对节点进行分组,共用节点只需要与少量委员会节点通信,共用节点两两之间不需要进行通信,而共用节点来自不同分组,因此,本发明降低了不同分组节点之间的通信次数,从而降低了平均通信延迟。
区块链网络在进行共识的过程中可能会遇到拜占庭故障,例如,委员会的主节点为恶意节点,可能生成包含错误信息的区块或故意不发送消息引起超时,导致初始区块生成失败;委员会的主节点为诚实节点,但委员会包含至少2c/3+1个恶意节点,恶意节点可能故意不响应主节点引起超时,导致初始区块生成失败;委员会的主节点为恶意节点,且委员会包含至少2c/3+1个恶意节点,主节点可能与其它恶意节点共同作恶,成功生成包含错误信息的初始区块。但诚实的共用节点会检测出恶意区块,并拒绝响应委员会节点的消息引起超时,导致共识失败。
为解决上述问题,在一个实施例中,本发明实施例的双层分组拜占庭容错共识方法还包括步骤S6:在进行容错共识时,生成每组节点的信誉列表,若某一组委员会进行第一轮共识失败,根据该信誉列表为该组重新选取委员会节点并启动视图转换协议,以避免系统陷入无限等待。
优选的,步骤S6包括以下子步骤:
S61,建立信誉机制,生成节点的信誉列表。系统正常运行时,根据每个节点诚实或者恶意行为的次数进行计分并生成信誉列表,该列表由所有节点共同维护,记录于区块链中。
S62,当第i组委员会的提案在共识过程中出现拜占庭故障时,系统中所有分组停止正在进行中的共识提案。
S63,从第i组的高信誉节点中随机抽取c个组成新委员会。
S64,新委员会节点向共用节点群广播视图转换消息,消息格式为<‘view-change’,vold,vnew,h,H(Bc),Bc>,其中vold和vnew分别为当前视图编号和新视图编号,Bc为节点本地账本中保存的最新区块,H(Bc)为Bc的摘要。
S65,共用节点收到视图转换消息后验证最新区块、视图编号以及区块高度是否一致。若验证通过则进行下个步骤,否则拒绝新委员会的视图转换请求。
S66,共用节点更新视图编号,使用门限签名私钥对视图转换确认消息<‘view-change-confirm’,vnew,h,Bc>签名,并广播至新委员会。
S67,新委员会节点收到至少2f+1条签名消息后,合成聚合签名并广播至共用节点群。
S68,共用节点将聚合签名转发至所属的委员会节点,令其更新视图编号和最新区块。
视图转换完成后,区块链网络继续按照上述实施例步骤S1至S5中的流程运行。
本发明实施例的一种双层分组拜占庭容错共识系统,包括多组节点;
对于每组节点,其中,部分节点为委员会节点,组成该组的委员会,除委员会节点以外的剩余节点作为共用节点,主节点从委员会节点中选取;
若某一组委员会接收到提案请求,该组的主节点根据提案请求生成区块并发送给该组其他委员会节点进行第一轮共识,若第一轮共识通过则生成初始区块并发送给各组的共用节点;
各组的共用节点对该初始区块进行第二轮共识确认,若第二轮共识通过则将该初始区块上链并保存在本地账本中。
系统的实现原理、技术效果与上述方法类似,此处不再赘述。
必须说明的是,上述任一实施例中,方法并不必然按照序号顺序依次执行,只要从执行逻辑中不能推定必然按某一顺序执行,则意味着可以以其他任何可能的顺序执行。
本领域的技术人员容易理解,以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。

Claims (9)

1.一种双层分组拜占庭容错共识方法,其特征在于,包括步骤:
S1,确定节点分组;
S2,对于每组节点,从中选取部分节点作为委员会节点,组成该组的委员会,除委员会节点以外的剩余节点作为共用节点,从委员会节点中选取每组的主节点;
S3,根据分组和选取情况搭建区块链网络;
S4,若某一组委员会接收到提案请求,该组的主节点根据提案请求生成区块并发送给该组其他委员会节点进行第一轮共识,若第一轮共识通过则生成初始区块并发送给各组的共用节点;
S5,各组的共用节点对该初始区块进行第二轮共识,若第二轮共识通过则将该初始区块上链并保存在本地账本中;
S5包括子步骤:
S51,第i组委员会将生成的初始区块广播至共用节点群,第i组委员会中的所有委员会节点都参与广播;
S52,当某一共用节点收到预设阈值以上个有效的初始区块后,使用门限签名私钥对该初始区块进行签名,并将签名后的初始区块广播至第i组委员会,第i组委员会节点也使用门限签名私钥对区块签名,并互相发送;
S53,当第i组委员会任意节点收到了至少2f+1个有效的门限签名之后,该节点将收到的签名合成为聚合签名,同时将其广播至第i组的其他委员会节点以及各组的共用节点,其中f为拜占庭节点个数;
S54,第i组的其他委员会节点以及各组的共用节点收到了有效的聚合签名之后,将区块保存于本地账本;
S55,共用节点转发聚合签名和区块到其它组委员会,每个共用节点仅负责向其所属分组的委员会转发聚合签名和区块;
S56,其它组委员会节点收到有效的聚合签名之后,将区块保存于本地账本。
2.如权利要求1所述的一种双层分组拜占庭容错共识方法,其特征在于,每组的共用节点与其所属组的委员会节点或其他组的委员会节点通信。
3.如权利要求1所述的一种双层分组拜占庭容错共识方法,其特征在于,对于每组节点,采用随机轮值方法从委员会节点中选取主节点。
4.如权利要求1所述的一种双层分组拜占庭容错共识方法,其特征在于,不同组的委员会节点并行进行各自区块的生成和发送。
5.如权利要求1所述的一种双层分组拜占庭容错共识方法,其特征在于,还包括步骤S6:在进行容错共识时,生成每组节点的信誉列表,若某一组委员会进行第一轮共识失败,根据该信誉列表为该组重新选取委员会节点并启动视图转换协议。
6.如权利要求1所述的一种双层分组拜占庭容错共识方法,其特征在于,S3包括子步骤:
使用非对称加密算法为每个节点生成公钥、私钥对,用于节点的身份认证和数字签名;使用基于BLS的门限签名为每个节点生成门限签名私钥和系统公钥,用于初始区块确认阶段的投票;通过证书授权中心为节点颁发相应的公钥证书;
使用Hyperledger Fabric搭建区块链网络,根据分组和选取情况对区块链网络进行配置,其中,使用组织实现节点的分组,每个组织包含对应分组的所有节点,将组织中的委员会节点设置为锚节点。
7.如权利要求1所述的一种双层分组拜占庭容错共识方法,其特征在于,S4包括子步骤:
S41,若第i组委员会在t时刻收到第k个客户端的提案请求,提案请求格式为<‘request’,o,t,k>,其中‘request’为提案请求标识符,o为操作,第i组的主节点验证操作o是否合法;
S42,合法验证通过后,第i组的主节点将提案内容打包成区块B,向该组其它委员会节点发送预准备消息,预准备消息格式为<‘pre-prepare’,v,h,H(B),B>,其中,‘pre-prepare’为预准备消息标识符,v为当前视图编号,h为区块高度,H(B)为区块摘要,区块摘要通过哈希函数计算得到;
S43,对于第i组委员会中的任意节点j,当收到预准备消息后,检查消息签名是否正确,视图编号以及区块高度是否一致,检查通过后,向该组委员会广播准备消息,准备消息格式为<‘prepare’,v,h,H(B),j>j,其中,‘prepare’为准备消息标识符,j为该节点的序号;
S44,当第i组委员会中的节点收到预设阈值以上个准备消息后,向委员会广播承诺消息,消息格式为<‘commit’,v,h,H(B),j>j,其中,‘commit’为承诺消息标识符;
S45,当第i组委员会中的节点收到预设阈值以上个承诺消息,则第一轮共识完成,生成初始区块,初始区块记为Binit,Binit=B。
8.如权利要求5所述的一种双层分组拜占庭容错共识方法,其特征在于,S6包括子步骤:
S61,正常容错共识时,根据每个节点诚实或者恶意行为的次数进行计分并生成信誉列表,该列表由所有节点共同维护,记录于区块链中;
S62,当第i组委员会的提案在共识过程中出现拜占庭故障时,所有分组停止正在进行中的共识提案;
S63,从第i组的高信誉节点中随机抽取c个组成新委员会;
S64,新委员会节点向各组的共用节点广播视图转换消息,消息格式为<‘view-change’,vold,vnew,h,H(Bc),Bc>,其中,‘view-change’为视图转换消息标识符,vold和vnew分别为当前视图编号和新视图编号,Bc为节点本地账本中保存的最新区块,H(Bc)为Bc的摘要,h为区块高度;
S65,共用节点收到视图转换消息后验证最新区块、视图编号以及区块高度是否一致,若验证通过则执行步骤S66,否则拒绝新委员会的视图转换请求;
S66,共用节点更新视图编号,使用门限签名私钥对视图转换确认消息,视图转换确认消息格式为<‘view-change-confirm’,vnew,h,Bc>签名,‘view-change-confirm’为视图转换确认消息标识符,并广播至新委员会;
S67,新委员会节点收到至少2f+1条签名消息后,合成聚合签名并广播至共用节点群,其中f为拜占庭节点个数;
S68,共用节点将聚合签名转发至所属的委员会节点,令其更新视图编号和最新区块。
9.一种双层分组拜占庭容错共识系统,其特征在于,包括多组节点;
对于每组节点,其中,部分节点为委员会节点,组成该组的委员会,除委员会节点以外的剩余节点作为共用节点,主节点从委员会节点中选取;
若某一组委员会接收到提案请求,该组的主节点根据提案请求生成区块并发送给该组其他委员会节点进行第一轮共识,若第一轮共识通过则生成初始区块并发送给各组的共用节点;
各组的共用节点对该初始区块进行第二轮共识确认,若第二轮共识通过则将该初始区块上链并保存在本地账本中;
其中,所述各组的共用节点对该初始区块进行第二轮共识确认,若第二轮共识通过则将该初始区块上链并保存在本地账本中,具体包括:
第i组委员会将生成的初始区块广播至共用节点群,第i组委员会中的所有委员会节点都参与广播;
当某一共用节点收到预设阈值以上个有效的初始区块后,使用门限签名私钥对该初始区块进行签名,并将签名后的初始区块广播至第i组委员会,第i组委员会节点也使用门限签名私钥对区块签名,并互相发送;
当第i组委员会任意节点收到了至少2f+1个有效的门限签名之后,该节点将收到的签名合成为聚合签名,同时将其广播至第i组的其他委员会节点以及各组的共用节点,其中f为拜占庭节点个数;
第i组的其他委员会节点以及各组的共用节点收到了有效的聚合签名之后,将区块保存于本地账本;
共用节点转发聚合签名和区块到其它组委员会,每个共用节点仅负责向其所属分组的委员会转发聚合签名和区块;
其它组委员会节点收到有效的聚合签名之后,将区块保存于本地账本。
CN202110936879.0A 2021-08-16 2021-08-16 一种双层分组拜占庭容错共识方法及系统 Active CN113642019B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110936879.0A CN113642019B (zh) 2021-08-16 2021-08-16 一种双层分组拜占庭容错共识方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110936879.0A CN113642019B (zh) 2021-08-16 2021-08-16 一种双层分组拜占庭容错共识方法及系统

Publications (2)

Publication Number Publication Date
CN113642019A CN113642019A (zh) 2021-11-12
CN113642019B true CN113642019B (zh) 2023-07-25

Family

ID=78421959

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110936879.0A Active CN113642019B (zh) 2021-08-16 2021-08-16 一种双层分组拜占庭容错共识方法及系统

Country Status (1)

Country Link
CN (1) CN113642019B (zh)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114189325B (zh) * 2021-11-19 2023-09-29 新疆大学 具有高容错可扩展的拜占庭容错方法、装置及存储介质
CN114449000B (zh) * 2021-12-28 2022-10-11 北京邮电大学 一种车联网数据共识优化存储方法及存储系统
CN114584450A (zh) * 2022-03-04 2022-06-03 中国建设银行股份有限公司 双层区块链系统及共识方法
CN114615281B (zh) * 2022-03-07 2023-02-28 中国科学院软件研究所 基于小规模委员会的区块链出块方法及PoS协议确认方法
CN114884652A (zh) * 2022-03-29 2022-08-09 蚂蚁区块链科技(上海)有限公司 一种区块链上产生随机数种子的方法、系统和共识节点
CN116962449A (zh) * 2022-04-14 2023-10-27 苏州科技大学 一种面向物联网系统的改进共识算法
CN114862397B (zh) * 2022-07-06 2022-09-30 国网天津市电力公司培训中心 一种基于双链结构的双解耦区块链分布式方法
CN116112490B (zh) * 2022-12-29 2024-04-16 新疆大学 一种低复杂度可扩展的拜占庭容错方法及装置、存储介质
CN116709341B (zh) * 2023-07-31 2024-04-30 中国人民解放军军事科学院系统工程研究院 针对无人蜂群的实用拜占庭容错共识算法优化方法及系统
CN117037988B (zh) * 2023-08-22 2024-05-17 广州视景医疗软件有限公司 一种基于区块链的电子病历存储方法及装置
CN117527266B (zh) * 2024-01-05 2024-05-17 杭州趣链科技有限公司 异步网络共识方法、装置、电子设备及可读存储介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106788987A (zh) * 2016-11-28 2017-05-31 树读(上海)信息科技有限公司 一种基于区块链的征信数据共享与交易系统
CN107528886A (zh) * 2017-07-25 2017-12-29 中国科学院计算技术研究所 区块链全网拆分方法与系统
CN108259438A (zh) * 2016-12-29 2018-07-06 中移(苏州)软件技术有限公司 一种基于区块链技术的认证的方法和装置
CN111371744A (zh) * 2020-02-21 2020-07-03 重庆邮电大学 一种基于分布式密钥的拜占庭容错共识方法
CN111614468A (zh) * 2020-05-24 2020-09-01 济南欣格信息科技有限公司 一种区块链共识方法及系统

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106788987A (zh) * 2016-11-28 2017-05-31 树读(上海)信息科技有限公司 一种基于区块链的征信数据共享与交易系统
CN108259438A (zh) * 2016-12-29 2018-07-06 中移(苏州)软件技术有限公司 一种基于区块链技术的认证的方法和装置
CN107528886A (zh) * 2017-07-25 2017-12-29 中国科学院计算技术研究所 区块链全网拆分方法与系统
CN111371744A (zh) * 2020-02-21 2020-07-03 重庆邮电大学 一种基于分布式密钥的拜占庭容错共识方法
CN111614468A (zh) * 2020-05-24 2020-09-01 济南欣格信息科技有限公司 一种区块链共识方法及系统

Also Published As

Publication number Publication date
CN113642019A (zh) 2021-11-12

Similar Documents

Publication Publication Date Title
CN113642019B (zh) 一种双层分组拜占庭容错共识方法及系统
CN110289966B (zh) 基于拜占庭容错的抗自适应攻击联盟链共识方法
CN109218391B (zh) 一种基于区块链的分布式存储系统审计与去中心化的方法
CN111625593B (zh) 基于区块链的数据处理方法、装置、计算机设备
EP2380324B1 (en) Secure node identifier assignment in a distributed hash table for peer-to-peer networks
CN112235379B (zh) 一种区块链底层共享存储方法
CN111371877B (zh) 一种异构联盟链的共识方法
CN111311414A (zh) 一种基于一致性哈希算法的区块链多方共识方法
WO2011047548A1 (zh) 一种传感器网络密钥管理和节点鉴别方法
CN115378604B (zh) 一种基于信誉值机制的边缘计算终端设备的身份认证方法
CN113225736B (zh) 无人机集群节点认证方法、装置、存储介质及计算机设备
CN113132401B (zh) 基于区块链的数据处理方法和装置
CN107241448A (zh) 一种云存储节点负载均衡方法
KR20200081533A (ko) 사물 인터넷 환경을 위한 동적 블라인드 투표기반의 블록체인 합의방법
CN108494558B (zh) 用于实现公平交换的方法和系统
CN115633035A (zh) 一种基于改进的pbft物联网区块链共识算法
CN113901528A (zh) 基于区块链的云端数据完整性审计方法
CN114862397A (zh) 一种基于双链结构的双解耦区块链分布式方法
CN107454162A (zh) 一种提高云计算环境可靠性的系统
CN114499874B (zh) 一种应用于工业互联网的拜占庭容错共识优化方法
CN111818152B (zh) 一种基于分布式网络的领导者选举的共识方法
CN116633699B (zh) 基于区块链的产品防伪溯源信息可信处理方法及系统
CN117294720B (zh) 区块链的共识方法、装置、存储介质及设备
CN107197055A (zh) 一种在云端实现存储资源分配的装置
CN114928446A (zh) 一种大规模节点高效共识方法

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant