CN110545286A - 加入联盟链、退出联盟链的方法及装置 - Google Patents
加入联盟链、退出联盟链的方法及装置 Download PDFInfo
- Publication number
- CN110545286A CN110545286A CN201910880724.2A CN201910880724A CN110545286A CN 110545286 A CN110545286 A CN 110545286A CN 201910880724 A CN201910880724 A CN 201910880724A CN 110545286 A CN110545286 A CN 110545286A
- Authority
- CN
- China
- Prior art keywords
- node
- request
- message
- consensus
- nodes
- 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.)
- Granted
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/08—Network architectures or network communication protocols for network security for authentication of entities
- H04L63/0823—Network architectures or network communication protocols for network security for authentication of entities using certificates
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/10—Network architectures or network communication protocols for network security for controlling access to devices or network resources
- H04L63/101—Access control lists [ACL]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1095—Replication or mirroring of data, e.g. scheduling or transport for data synchronisation between network nodes
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Mobile Radio Communication Systems (AREA)
Abstract
本申请公开了加入联盟链、退出联盟链的方法及装置。加入联盟链的方法包括:第一节点接收目标节点所广播的加入请求;基于有效证书列表验证加入请求的有效性;当有效性验证通过时,第一节点基于未进行门限加密的加入请求在联盟链中进行共识过程;当加入请求共识通过时,第一节点向目标节点发送第一消息。退出联盟链的方法包括:第一节点接收目标节点所广播的退出请求;基于无效证书列表验证退出请求的有效性;当有效性验证通过时,第一节点基于未进行门限加密的退出请求在联盟链中运行共识过程;当退出请求共识通过时,第一节点向目标节点发送第一消息。基于上述过程,目标节点加入联盟链或者退出联盟链的效率较高。
Description
技术领域
本申请实施例涉及区块链技术领域,特别涉及一种加入联盟链、退出联盟链的方法及装置。
背景技术
区块链是一种去中心化的、由各节点参与的分布式数据库技术。区块链没有一个中心的机构,各个节点信息的一致性是通过区块链的共识机制来保证的。近年来,在对区块链的共识机制的研究过程中,出现越来越多的技术用于提高共识机制的共识一致性和可用性,但是对于节点动态加入或者动态退出联盟链的研究却极其匮乏。
相关技术中,区块链的共识机制并没有节点动态加入或者动态退出联盟链的功能,节点加入或者退出联盟链的过程需要将所有节点全部停机,然后更新配置文件,再将所有节点全部重启,以完成节点的加入或者退出。
在实现本申请的过程中,发明人发现相关技术至少存在以下问题:
相关技术中,节点加入或者退出联盟链的过程需要将所有节点全部停机,然后更新配置文件,再将所有节点全部重启。此过程不能保证联盟链在实际应用中的连续可用性,并且需要耗费大量人力来配置文件和重启节点,节点加入或者退出联盟链的效率极低。
发明内容
本申请实施例提供了一种加入联盟链、退出联盟链的方法及装置,可用于解决相关技术中的节点加入或者退出联盟链的效率极低的问题。所述技术方案如下:
一方面,本申请实施例提供了一种加入联盟链的方法,所述方法应用于包括多个第一节点和至少一个具有认证功能的第二节点的联盟链中,所述方法包括:
所述第一节点接收目标节点所广播的加入请求;
所述第一节点基于有效证书列表验证所述加入请求的有效性,所述有效证书列表用于记录所述第二节点颁发的认证证书;
当所述加入请求的有效性验证通过时,所述第一节点基于未进行门限加密的加入请求在所述联盟链中进行共识过程;
当所述加入请求共识通过时,所述第一节点向所述目标节点发送第一消息,所述第一消息用于表示同意所述目标节点加入所述联盟链。
还提供了一种退出联盟链的方法,所述方法应用于包括多个第一节点和至少一个具有认证功能的第二节点的联盟链中,所述方法包括:
所述第一节点接收目标节点所广播的退出请求;
所述第一节点基于无效证书列表验证所述退出请求的有效性,所述无效证书列表用于记录所述第二节点撤销的认证证书;
当所述退出请求的有效性验证通过时,所述第一节点基于未进行门限加密的退出请求在所述联盟链中运行共识过程;
当所述退出请求共识通过时,所述第一节点向所述目标节点发送第一消息,所述第一消息用于表示同意所述目标节点退出所述联盟链。
在一种可能实现方式中,所述第一节点基于未进行门限加密的退出请求在所述联盟链中运行共识过程,包括:
所述第一节点对所述退出请求进行分割,得到参考数量个数据分块,向其他第一节点发送不同的数据分块;
当确定已接收到所述退出请求的其他第一节点的数量不少于第一阈值时,确定所述联盟链对所述退出请求共识通过。
在一种可能实现方式中,所述第一节点基于未进行门限加密的退出请求在所述联盟链中运行共识过程,包括:
所述第一节点对接收到的所述退出请求的数据分块进行广播;
当所述第一节点接收到的数据分块的数量不少于第二阈值时,广播第二消息,所述第二消息用于表示已接收到足够数量的数据分块;
当所述第一节点接收到的第二消息的数量不少于第三阈值时,所述第一节点基于已接收到的数据分块还原所述退出请求;
所述第一节点基于所述退出请求,广播第三消息,所述第三消息用于表示所述第一节点已接收到所述退出请求;
当确定已接收到所述退出请求的第一节点的数量不少于第四阈值时,确定所述联盟链对所述退出请求共识通过。
在一种可能实现方式中,所述第一节点对所述退出请求进行分割,包括:
所述第一节点基于纠删码算法对所述退出请求进行分割;
所述得到参考数量个数据分块之后,还包括:
基于所述数据分块生成默克尔树;
所述向其他第一节点发送不同的数据分块,包括:
向其他第一节点发送不同的数据分块和所述默克尔树的信息。
在一种可能实现方式中,所述当所述第一节点接收到的数据分块的数量不少于第二阈值时,广播第二消息之前,还包括:
所述第一节点验证接收到的数据分块的有效性;
所述当所述第一节点接收到的数据分块的数量不少于第二阈值时,广播第二消息,包括:
当所述第一节点接收到的有效性验证通过的数据分块的数量不少于第二阈值时,广播第二消息。
还提供了一种退出联盟链的方法,所述方法应用于包括多个第一节点和至少一个具有认证功能的第二节点的联盟链中,所述方法包括:
所述第一节点接收其他第一节点所广播的退出请求,所述退出请求用于表示目标节点为错误节点;
所述第一节点基于未进行门限加密的退出请求在所述联盟链中进行共识过程;
当所述退出请求共识通过时,所述第一节点向所述第二节点发送第一消息,所述第一消息用于表示同意将所述目标节点强制退出所述联盟链;
当所述第二节点接收到的第一消息的数量不少于第一阈值时,将所述目标节点强制退出所述联盟链。
在一种可能实现方式中,所述第一节点基于未进行门限加密的退出请求在所述联盟链中运行共识过程,包括:
所述第一节点对所述退出请求进行分割,得到参考数量个数据分块,向其他第一节点发送不同的数据分块;
当确定已接收到所述退出请求的其他第一节点的数量不少于第二阈值时,确定所述联盟链对所述退出请求共识通过。
在一种可能实现方式中,所述第一节点基于未进行门限加密的退出请求在所述联盟链中运行共识过程,包括:
所述第一节点对接收到的所述退出请求的数据分块进行广播;
当所述第一节点接收到的数据分块的数量不少于第三阈值时,广播第二消息,所述第二消息用于表示已接收到足够数量的数据分块;
当所述第一节点接收到的第二消息的数量不少于第四阈值时,所述第一节点基于已接收到的数据分块还原所述退出请求;
所述第一节点基于所述退出请求,广播第三消息,所述第三消息用于表示所述第一节点已接收到所述退出请求;
当确定已接收到所述退出请求的第一节点的数量不少于第五阈值时,确定所述联盟链对所述退出请求共识通过。
在一种可能实现方式中,所述第一节点对所述退出请求进行分割,包括:
所述第一节点基于纠删码算法对所述退出请求进行分割;
所述得到参考数量个数据分块之后,还包括:
基于所述数据分块生成默克尔树;
所述向其他第一节点发送不同的数据分块,包括:
向其他第一节点发送不同的数据分块和所述默克尔树的信息。
在一种可能实现方式中,所述当所述第一节点接收到的数据分块的数量不少于第三阈值时,广播第二消息之前,还包括:
所述第一节点验证接收到的数据分块的有效性;
所述当所述第一节点接收到的数据分块的数量不少于第三阈值时,广播第二消息,包括:
当所述第一节点接收到的有效性验证通过的数据分块的数量不少于第三阈值时,广播第二消息。
另一方面,提供了一种加入联盟链的装置,所述装置包括:
接收模块,用于接收目标节点所广播的加入请求;
验证模块,用于基于有效证书列表验证所述加入请求的有效性,所述有效证书列表用于记录所述第二节点颁发的认证证书;
共识模块,用于当所述加入请求的有效性验证通过时,基于未进行门限加密的加入请求在所述联盟链中进行共识过程;
发送模块,用于当所述加入请求共识通过时,向所述目标节点发送第一消息,所述第一消息用于表示同意所述目标节点加入所述联盟链。
在一种可能实现方式中,所述共识模块,包括:
分割单元,用于对所述加入请求进行分割,得到参考数量个数据分块;
发送单元,用于向其他第一节点发送不同的数据分块;
确定单元,用于当确定已接收到所述加入请求的其他第一节点的数量不少于第一阈值时,确定所述联盟链对所述加入请求共识通过。
在一种可能实现方式中,所述共识模块,还包括:
广播单元,用于对接收到的所述加入请求的数据分块进行广播;
所述广播单元,还用于当所述第一节点接收到的数据分块的数量不少于第二阈值时,广播第二消息,所述第二消息用于表示已接收到足够数量的数据分块;
还原单元,用于当所述第一节点接收到的第二消息的数量不少于第三阈值时,基于已接收到的数据分块还原所述加入请求;
所述广播单元,还用于基于所述加入请求,广播第三消息,所述第三消息用于表示所述第一节点已接收到所述加入请求;
所述确定单元,用于当确定已接收到所述加入请求的第一节点的数量不少于第四阈值时,确定所述联盟链对所述加入请求共识通过。
在一种可能实现方式中,所述分割单元,用于基于纠删码算法对所述加入请求进行分割;
所述共识模块,还包括:
生成单元,用于基于所述数据分块生成默克尔树;
所述发送单元,用于向其他第一节点发送不同的数据分块和所述默克尔树的信息。
在一种可能实现方式中,所述共识模块,还包括:
验证单元,用于验证接收到的数据分块的有效性;
所述广播单元,用于当所述第一节点接收到的有效性验证通过的数据分块的数量不少于第二阈值时,广播第二消息。
还提供了一种退出联盟链的装置,所述装置包括:
接收模块,用于接收目标节点所广播的退出请求;
验证模块,用于基于无效证书列表验证所述退出请求的有效性,所述无效证书列表用于记录所述第二节点撤销的认证证书;
共识模块,用于当所述退出请求的有效性验证通过时,基于未进行门限加密的退出请求在所述联盟链中运行共识过程;
发送模块,用于当所述退出请求共识通过时,向所述目标节点发送第一消息,所述第一消息用于表示同意所述目标节点退出所述联盟链。
在一种可能实现方式中,所述共识模块,包括:
分割单元,用于对所述退出请求进行分割,得到参考数量个数据分块;
发送单元,用于向其他第一节点发送不同的数据分块;
确定单元,用于当确定已接收到所述退出请求的其他第一节点的数量不少于第一阈值时,确定所述联盟链对所述退出请求共识通过。
在一种可能实现方式中,所述共识模块,还包括:
广播单元,用于对接收到的所述退出请求的数据分块进行广播;
所述广播单元,还用于当所述第一节点接收到的数据分块的数量不少于第二阈值时,广播第二消息,所述第二消息用于表示已接收到足够数量的数据分块;
还原单元,用于当所述第一节点接收到的第二消息的数量不少于第三阈值时,基于已接收到的数据分块还原所述退出请求;
所述广播单元,还用于基于所述退出请求,广播第三消息,所述第三消息用于表示所述第一节点已接收到所述退出请求;
所述确定单元,用于当确定已接收到所述退出请求的第一节点的数量不少于第四阈值时,确定所述联盟链对所述退出请求共识通过。
在一种可能实现方式中,所述分割单元,用于所述第一节点基于纠删码算法对所述退出请求进行分割;
所述共识模块,还包括:
生成单元,用于基于所述数据分块生成默克尔树;
所述发送单元,用于向其他第一节点发送不同的数据分块和所述默克尔树的信息。
在一种可能实现方式中,所述共识模块,还包括:
验证单元,用于验证接收到的数据分块的有效性;
所述广播单元,用于当所述第一节点接收到的有效性验证通过的数据分块的数量不少于第二阈值时,广播第二消息。
还提供了一种退出联盟链的装置,所述装置包括:
接收模块,用于接收其他第一节点所广播的退出请求,所述退出请求用于表示目标节点为错误节点;
共识模块,用于基于未进行门限加密的退出请求在所述联盟链中进行共识过程;
发送模块,用于当所述退出请求共识通过时,向所述第二节点发送第一消息,所述第一消息用于表示同意将所述目标节点强制退出所述联盟链;
退出模块,用于当所述第二节点接收到的第一消息的数量不少于第一阈值时,将所述目标节点强制退出所述联盟链。
在一种可能实现方式中,所述共识模块,包括:
分割单元,用于对所述退出请求进行分割,得到参考数量个数据分块;
发送单元,用于向其他第一节点发送不同的数据分块;
确定单元,用于当确定已接收到所述退出请求的其他第一节点的数量不少于第二阈值时,确定所述联盟链对所述退出请求共识通过。
在一种可能实现方式中,所述共识模块,还包括:
广播单元,用于对接收到的所述退出请求的数据分块进行广播;
所述广播单元,还用于当所述第一节点接收到的数据分块的数量不少于第三阈值时,广播第二消息,所述第二消息用于表示已接收到足够数量的数据分块;
还原单元,用于当所述第一节点接收到的第二消息的数量不少于第四阈值时,基于已接收到的数据分块还原所述退出请求;
所述广播单元,还用于基于所述退出请求,广播第三消息,所述第三消息用于表示所述第一节点已接收到所述退出请求;
所述确定单元,用于当确定已接收到所述退出请求的第一节点的数量不少于第五阈值时,确定所述联盟链对所述退出请求共识通过。
在一种可能实现方式中,所述分割单元,用于基于纠删码算法对所述退出请求进行分割;
所述共识模块,还包括:
生成单元,用于基于所述数据分块生成默克尔树;
所述发送单元,用于向其他第一节点发送不同的数据分块和所述默克尔树的信息。
在一种可能实现方式中,所述共识模块,还包括:
验证单元,用于验证接收到的数据分块的有效性;
所述广播单元,用于当所述第一节点接收到的有效性验证通过的数据分块的数量不少于第三阈值时,广播第二消息。
另一方面,提供了一种计算机设备,所述计算机设备包括处理器和存储器,所述存储器中存储有至少一条程序代码,所述至少一条程序代码由所述处理器加载并执行,以实现上述任一所述的加入联盟链的方法,或者上述任一所述的退出联盟链的方法。
另一方面,还提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有至少一条程序代码,所述至少一条程序代码由处理器加载并执行,以实现上述任一所述的加入联盟链的方法,或者上述任一所述的退出联盟链的方法。
本申请实施例提供的技术方案至少带来如下有益效果:
第一节点基于未进行门限加密的加入请求或者退出请求在联盟链中进行共识过程,当加入请求或者退出请求共识通过时,目标节点可以加入联盟链或者退出联盟链。在目标节点加入联盟链或者退出联盟链的过程中,无需将所有节点停机,也无需配置文件和重启节点,联盟链中的其他节点正常运行,从而能够保证联盟链在实际应用中的连续可用性,节省人工成本,目标节点加入联盟链或者退出联盟链的效率较高。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的一种加入联盟链、退出联盟链的方法的实施环境的示意图;
图2是本申请实施例提供的一种加入联盟链的方法流程图;
图3是本申请实施例提供的一种广播数据分块的示意图;
图4是本申请实施例提供的一种基于数据分块进行共识过程的方法流程图;
图5是本申请实施例提供的一种共识过程的示意图;
图6是本申请实施例提供的一种目标节点加入联盟链的过程示意图;
图7是本申请实施例提供的一种退出联盟链的方法流程图;
图8是本申请实施例提供的一种目标节点退出联盟链的过程示意图;
图9是本申请实施例提供的一种退出联盟链的方法流程图;
图10是本申请实施例提供的一种目标节点被强制退出联盟链的过程示意图;
图11是本申请实施例提供的一种加入联盟链的装置示意图;
图12是本申请实施例提供的一种共识模块的结构示意图;
图13是本申请实施例提供的一种退出联盟链的装置示意图;
图14是本申请实施例提供的一种共识模块的结构示意图;
图15是本申请实施例提供的一种退出联盟链的装置示意图;
图16是本申请实施例提供的一种共识模块的结构示意图;
图17是本申请实施例提供的一种计算机设备的结构示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
区块链是一种去中心化的、由各节点参与的分布式数据库技术。区块链没有一个中心的机构,各个节点信息的一致性是通过区块链的共识机制来保证的。近年来,在对区块链的共识机制的研究过程中,出现越来越多的技术用于提高共识机制的共识一致性和可用性,但是对于节点动态加入或者动态退出联盟链的研究却极其匮乏。
区块链通常可以分为公有链、私有链和联盟链三大类。其中,联盟链是指由预先选定多个机构或组织共同参与管理的区块链,每个机构或组织都可以管理一个或多个节点。联盟链中的节点数量有限且比较少,所以共识速率较快;此外,由于联盟链中的节点是预先选定并经过认证的,节点的数量和身份都是已知的,所以在联盟链的数据传输过程中,数据的安全性较高。
对此,本申请实施例提供了一种加入联盟链、退出联盟链的方法,请参考图1,其示出了本申请实施例提供的一种加入联盟链、退出联盟链的方法的实施环境的示意图。该实施环境可以包括联盟链10,在该联盟链10中包括:多个第一节点11和至少一个第二节点12。其中,第二节点具有认证功能。第一节点11与第二节点12之间可以互通消息,不同的第一节点11之间也可以互通消息。
第一节点11可以获取并存储加入请求或者退出请求,也可以将加入请求或者退出请求发送至其他第一节点,从而在目标节点需要加入联盟链或者退出联盟链时,应用本申请实施例提供的方法对加入请求或者退出请求进行共识过程,实现目标节点的加入或者退出;第二节点12可以存储有效证书列表和无效证书列表,也可以将有效证书列表和无效证书列表发送至第一节点11进行存储。
可选地,第一节点11和第二节点12既可以是诸如手机、平板电脑、个人计算机等的终端设备,也可以是一台服务器或者是由多台服务器组成的服务器集群,还可以是一个云计算服务中心。第一节点11与第二节点12通过异步网络彼此连接。
本领域技术人员应能理解上述联盟链10仅为举例,其他现有的或今后可能出现的终端或服务器如可适用于本申请,也应包含在本申请保护范围以内,并在此以引用方式包含于此。
基于上述图1所示的实施环境,本申请实施例提供一种加入联盟链的方法,该方法应用于包括多个第一节点和至少一个具有认证功能的第二节点的联盟链中。图2是本申请实施例提供的一种加入联盟链的方法流程图,如图2所示,本申请实施例提供的方法可以包括如下步骤:
在步骤201中,第一节点接收目标节点所广播的加入请求。
在本申请实施例的联盟链中,包括多个第一节点和至少一个具有认证功能的第二节点。第一节点用于对需要共识的请求进行共识过程,每个第一节点有一对公/私钥对;第二节点具有认证功能,用于管理所有第一节点的信息,具有一对属于第二节点的公/私钥对,例如,第二节点可以为联盟链中的认证中心(Certification Authority,CA)节点。第二节点的主要功能如下:判断一个新节点是否有资格加入联盟链,为有资格加入联盟链的新节点颁发认证证书,将新颁发的认证证书记录在有效证书列表中;为退出联盟链的节点撤销认证证书,将被撤销的认证证书记录在无效证书列表中。在该联盟链中,所有第一节点均信任第二节点,且第一节点长期保留第二节点的身份信息,也就是长期保留第二节点的公钥。
当目标节点想要加入联盟链时,目标节点首先需要向联盟链中的第二节点发送注册请求,注册请求中包括该目标节点的资质信息。第二节点基于目标节点的资质信息判断该目标节点是否有资格加入该联盟链,若目标节点有资格加入该联盟链,则第二节点为该目标节点颁发认证证书;若目标节点没有资格加入该联盟链,第二节点可以直接向目标节点发送拒绝加入的指令。第二节点在向目标节点颁发认证证书后,将认证证书记录在有效证书列表中,以及时更新有效证书列表。在认证证书中携带有第二节点的数字签名,数字签名是只有信息的发送者才能产生的别人无法伪造的一段数字串,数字签名可以证明认证证书是由第二节点颁发的。在一种可能实现方式中,第二节点可以广播有效证书列表,本申请实施例对第二节点广播有效证书列表的时机不加以限定,例如,第二节点在每轮共识结束时广播更新后的有效证书列表,或者第二节点定期广播更新后的有效证书列表等。
目标节点在接收到第二节点颁发的认证证书后,向联盟链中广播加入请求,该加入请求用于表示该目标节点想要加入该联盟链。第一节点接收目标节点所广播的加入请求。在目标节点所广播的加入请求中,可以携带该目标节点的认证证书的信息,以使第一节点能够基于有效证书列表验证加入请求的有效性。其中,认证证书的信息可以包括第二节点的数字签名、目标节点的公钥等信息。
第一节点在接收到加入请求后,需要获取有效证书列表,以验证加入请求是否有效。在一种可能实现方式中,第一节点获取有效证书列表的方式包括但不限于:第一节点主动从第二节点处读取有效证书列表,或者,第二节点广播有效证书列表,第一节点获取第二节点所广播的有效证书列表。其中,第一节点主动从第二节点处读取有效证书列表的过程可以为实时读取,也可以为每隔一段时间读取一次,还可以为在需要验证加入请求有效性时再去读取,本申请实施例对此不加以限定。无论通过哪种方式获取有效证书列表,第一节点在获取有效证书列表之后,即可执行步骤202。
在步骤202中,第一节点基于有效证书列表验证加入请求的有效性,有效证书列表用于记录第二节点颁发的认证证书。
由于有效证书列表记录了第二节点颁发的认证证书,也就是记录了具有加入资格的节点的认证证书,所以第一节点可以通过判断有效证书列表中是否记录有加入请求中携带的目标节点的认证证书,来验证加入请求的有效性。当有效证书列表中记录有目标节点的认证证书时,第一节点即可确定该目标节点广播的加入请求有效;当有效证书列表中未记录有目标节点的认证证书时,第一节点即可确定该目标节点广播的加入请求无效。
在一种可能实现方式中,第二节点颁发的认证证书中包括目标节点的公钥,目标节点广播的加入请求中携带有目标节点的数字签名,目标节点的数字签名是指目标节点用其私钥将加入请求的摘要信息进行加密之后得到的加密信息,其中,加入请求的摘要信息是利用哈希函数对加入请求进行计算而得到的。此种情况下,当有效证书列表中记录有目标节点的认证证书时,第一节点可以根据目标节点的公钥和目标节点的数字签名进一步验证加入请求的有效性。具体而言,第一节点在接收到加入请求后,先利用相同的哈希函数对接收到的加入请求进行计算,得到第一摘要信息,然后用目标节点的公钥对目标节点的数字签名进行解密,得到第二摘要信息。当第一摘要信息与第二摘要信息相同时,第一节点可以确定目标节点广播的加入请求的有效性验证通过。
在步骤203中,当加入请求的有效性验证通过时,第一节点基于未进行门限加密的加入请求在联盟链中进行共识过程。
当加入请求的有效性验证通过时,第一节点基于加入请求进行共识过程,以进一步验证加入请求能否在联盟链中达成共识。需要说明的是,在进行共识过程时,加入请求未进行门限加密。门限加密是指任一节点使用一把主公钥对一条信息进行加密,进行门限加密之后的信息只有通过参考数量个诚实节点的共同合作才能获得解密秘钥,从而得到信息原文。此种加密方式很大程度上降低了共识的效率。此外,由于一旦有节点加入或者退出联盟链,需要重启所有节点,并且更新所有节点的公钥和私钥,工作量极大,所以门限加密的方式需要运行在封闭的联盟链中,不允许节点加入或者退出该联盟链。
由于联盟链本身的安全程度较高,所以即使不对加入请求进行门限加密,也可以在一定程度上保证加入请求的安全性。本申请实施例基于未进行门限加密的加入请求进行共识过程,一方面可以提高共识效率,另一方面当加入请求通过共识后,允许新节点动态加入联盟链,并参与下一轮共识,无需重启所有节点,无需更新所有节点的公钥和私钥。
在联盟链中进行共识过程时,第一节点的作用主要分为以下两种:
作用一:第一节点对加入请求进行分割,得到参考数量个数据分块,向其他第一节点发送不同的数据分块;当确定已接收到加入请求的其他第一节点的数量不少于第一阈值时,确定联盟链对加入请求共识通过。
第一节点在验证加入请求有效后,可以对加入请求进行分割,得到参考数量个数据分块。在一种可能实现方式中,第一节点基于纠删码算法对加入请求进行分割,得到参考数量个数据分块。在得到的数据分块中,包含原始数据块和冗余数据块,其中,原始数据块是对加入请求直接分割得到的数据分块,冗余数据块是基于原始数据块进行计算得到的数据分块。需要说明的是,对加入请求进行分割得到的数据分块的数量,可以与联盟链中的其他第一节点的总数一致。例如,假设联盟链中有(N+1)个第一节点,那么可以将加入请求分割为N个数据分块,这N个数据分块中包含K个原始数据块和M个冗余数据块。M表示上述N个数据分块中可以容忍发生错误的数据分块的个数。K表示还原出原始的加入请求至少所需的数据分块的个数,即基于上述N个数据分块中的任意K个数据分块,通过纠删码重构算法都可以还原出加入请求的原始内容。在一种可能实现方式中,在基于纠删码算法对加入请求进行分割时,可以参考能够容错的节点的数量f,来控制最终分割得到的数据分块中的原始数据块和冗余数据块的比例,例如,将加入请求分割成N个数据分块,其中2f个为冗余数据块,(N-2f)个为原始数据块,基于任意(N-2f)个数据分块即可还原出原始的加入请求。一般而言,能够容错的节点的数量f不超过第一节点总数量的1/3。
当第一节点对加入请求完成分割后,可以向其他第一节点发送不同的数据分块。例如,图3是本申请实施例提供的一种广播数据分块的示意图,如图3(1)所示,图3所示的联盟链中共包含四个第一节点,具有作用一的第一节点1将加入请求分割成三个数据分块,分别为数据分块①、数据分块②和数据分块③。然后第一节点1向第一节点2发送数据分块①,向第一节点3发送数据分块②,向第一节点4发送数据分块③。
在一种可能实现方式中,第一节点在基于纠删码算法对加入请求进行分割,得到参考数量个数量分块后,可以基于分割得到的数据分块生成默克尔(Merkle)树。也就是基于数据分块的哈希值构造一颗加入请求所对应的默克尔树。第一节点在向其他第一节点发送不同数据分块的同时,可以携带Merkle树的信息。其中,Merkle树的信息包括但不限于Merkle树的根节点对应的哈希值,以及Merkle树各个分支上的邻居节点的哈希值。邻居节点是指与数据分块的哈希值在Merkle树上的节点相邻的节点。
对于仅具有作用一的任一第一节点,当确定已接收到加入请求的其他第一节点的数量不少于第一阈值时,确定联盟链对加入请求共识通过。其中,确定已接收到加入请求的其他第一节点的数量不少于第一阈值的过程可以为:其他第一节点在接收到加入请求后,向该仅具有作用一的第一节点发送告知消息,告知消息用于表示已接收到加入请求,当该第一节点接收到告知消息的数量不少于第一阈值时,该第一节点即可确定已接收到加入请求的其他第一节点的数量不少于第一阈值。其中,第一阈值可以根据其他第一节点的总数量N以及能够容错的节点的数量f来确定,例如,第一阈值为(N-f)等。
需要说明的是,目标节点在广播加入请求时,所有的第一节点均可以接收到该加入请求,但是可能只有部分第一节点具有作用一,也就是只有部分第一节点将接收到的加入请求进行分割,然后将分割得到的数据分块发送至其他第一节点。
作用二:第一节点基于接收到的数据分块进行共识过程。
具体而言,图4是本申请实施例提供的一种基于数据分块进行共识过程的方法流程图,参见图4,具有作用二的第一节点基于接收到的数据分块进行共识过程可以分为以下几个步骤:
步骤401:第一节点对接收到的加入请求的数据分块进行广播。
此处的加入请求的数据分块是指由具有作用一的第一节点将加入请求进行分割得到的,具有作用一的第一节点向具有作用二的第一节点发送加入请求的数据分块。具有作用二的第一节点即可接收到加入请求的数量分块。第一节点在接收到加入请求的数据分块后,对接收到的数据分块进行广播,以使其他具有作用二的第一节点接收到更多的数据分块。例如,如图3(2)所示,第一节点1为具有作用一的第一节点,第一节点2、第一节点3及第一节点4为具有作用二的第一节点,第一节点1将数据分块①、数据分块②和数据分块③分别发送至第一节点2、第一节点3和第一节点4。然后第一节点2将接收到的数据分块①广播至第一节点3和第一节点4;第一节点3将接收到的数据分块②广播至第一节点2和第一节点4;第一节点4将接收到的数据分块③广播至第一节点2和第一节点3。由此,具有作用二的第一节点2、第一节点3及第一节点4均可以接收到数据分块①、数据分块②和数据分块③。这种传输数据分块的方式可以减小对第一节点1的网络带宽的依赖性,充分利用第一节点2、第一节点3以及第一节点4的网络带宽,提高数据分块的传输效率。
需要说明的是,具有作用二的任一第一节点既可以向其他第一节点广播数据分块,也可以接收其他第一节点所广播的数据分块。
步骤402:当第一节点接收到的数据分块的数量不少于第二阈值时,广播第二消息,第二消息用于表示已接收到足够数量的数据分块。
当第一节点接收到的数据分块的数量不少于第二阈值时,说明该第一节点已接收到足够数量的数据分块,此时,可以广播第二消息。第二阈值可以根据经验设置,也可以根据应用场景进行调整。例如,当具有作用二的第一节点的总数量为N,能够容错的节点的数量为f时,第二阈值可以设置为(N-f),当接收到的数据分块的数量达到(N-f)个时,说明该第一节点已接收到足够数量的数据分块。
在一种可能实现方式中,第一节点在接收到数据分块后,可以验证数据分块的有效性。当第一节点接收到的有效性验证通过的数据分块的数量不少于第二阈值时,再广播第二消息。
在一种可能实现方式中,第一节点在接收到数据分块的同时,接收到数据分块携带的Merkle树的信息,其中,Merkle树的信息包括但不限于:Merkle树的根节点对应的哈希值,以及Merkle树各个分支上的邻居节点的哈希值。第一节点验证数据分块的有效性的过程可以如下:第一节点计算接收到的数据分块的哈希值;根据数据分块的哈希值和Merkle树各个分支上的邻居节点的哈希值来重构Merkle树。通过比较重构后的Merkle树的根节点的哈希值与数据分块携带的Merkle树的根节点的哈希值是否相同,来判断接收到的数据分块是否有效。如果重构后的Merkle树的根节点的哈希值与数据分块携带的Merkle树的根节点的哈希值相同,则认为该数据分块通过有效性验证;反之,可以认为该数据分块无效,此时可以丢弃该数据分块。当接收到的数据分块通过有效性验证后,第一节点可以保存该数据分块。
需要说明的是,具有作用二的任一第一节点既可以广播第二消息,也可以接收其他第一节点所广播的第二消息。
步骤403:当第一节点接收到的第二消息的数量不少于第三阈值时,第一节点基于已接收到的数据分块还原加入请求。
当第一节点接收到的第二消息的数量不少于第三阈值时,说明已有不少于第三阈值数量的第一节点接收到了足够数量的数据分块,此时,第一节点可以基于已接收到的数据分块还原加入请求。其中,第三阈值可以根据能够容错的节点的数量f确定,例如,第三阈值为(2f+1)等。
在一种可能实现方式中,当具有作用一的第一节点基于纠删码算法将加入请求分割为N个数据分块,其中2f个为冗余数据块时,具有作用二的第一节点可以从接收到的数据分块中提取(N-2f)个数据分块,基于纠删码重构算法对数据分块进行数据还原计算,还原出加入请求的原始内容。
在一种可能实现方式中,第一节点可以对还原出的加入请求进行有效性验证。假设具有作用一的第一节点基于纠删码算法将加入请求分割成N个数据分块,发送的数据分块中携带基于数据分块生成的Merkle树的信息。在此种情况下,对还原出的加入请求进行有效性验证的过程可以为:具有作用二的第一节点在还原出加入请求后,基于纠删码算法重新对还原出的加入请求进行分割,得到N个数据分块,并基于该N个数据分块重构Merkle树,然后通过比较重构的Merkle树的根节点的哈希值与数据分块中携带的Merkle树的根节点的哈希值是否相同,来判断还原出的加入请求是否有效。如果重构的Merkle树的根节点的哈希值与数据分块携带的Merkle树的根节点的哈希值相同,表明还原出的加入请求有效。
步骤404:第一节点基于加入请求,广播第三消息,第三消息用于表示第一节点已接收到加入请求。
第一节点在还原出加入请求后,广播第三消息,第三消息用于表示第一节点已接收到加入请求。在一种可能实现方式中,第一节点在还原出加入请求后,验证还原出的加入请求的有效性,当加入请求的有效性验证通过时,再广播第三消息。
在一种可能实现方式中,第三消息为一种二进制的消息,该二进制的消息只有0和1两种可能,当还原出的加入请求有效时,第三消息为1;当还原出的加入请求无效时,第三消息为0。需要说明的是,在同一轮共识过程中,除了对加入请求进行共识过程外,可能对其他请求进行共识过程。在此种情况下,第三消息为一组二进制数字的序列,在该序列中,每个位置对应于一个请求,每个位置的值只有0和1两种可能,当第一节点还原了某位置对应的请求并验证该请求有效时,该位置的数值为1;当第一节点未还原某位置对应的请求后者验证还原出的该位置对应的请求无效时,该位置的数值为0。根据每个第一节点广播的第三消息,即可确定该第一节点接收到了哪些有效的请求。
步骤405:当确定已接收到加入请求的第一节点的数量不少于第四阈值时,确定联盟链对加入请求共识通过。
当基于各个第一节点广播的第三消息确定已接收到加入请求的第一节点的数量不少于第四阈值时,说明联盟链中已有足够数量的第一节点接收到了加入请求,此时,可以确定联盟链对加入请求共识通过。其中,第四阈值可以根据经验设置,也可以根据应用场景进行调整。例如,当具有作用二的第一节点的总数量为N,能够容错的节点的数量为f时,第四阈值可以设置为(N-f)。如果确定已接收到加入请求的第一节点的数量达到(N-f)个,说明该联盟链对加入请求共识通过。
需要说明的是,在对加入请求进行共识过程时,具有作用一的第一节点可以为一个或多个,当具有作用一的第一节点仅有一个时,该第一节点仅具有作用一,不具有作用二;当具有作用一的第一节点为多个时,这多个第一节点除具有作用一外,还具有作用二。例如,图5是本申请实施例提供的一种共识过程的示意图,如图5所示,该联盟链中的包括四个第一节点,分别为第一节点1、第一节点2、第一节点3和第一节点4。在共识过程中,具有作用一的第一节点为第一节点2和第一节点3,这两个第一节点除具有作用一外,还具有作用二。而第一节点1和第一节点4在此共识过程中仅具有作用二。
需要说明的是,步骤203中仅仅介绍了基于加入请求这一个请求在联盟链中进行共识过程。在实际应用中,在对加入请求进行共识过程的同时,还可以对其他请求进行共识过程。在进行共识过程之前,客户端可以向所有第一节点发送需要在联盟内形成共识的请求。在新一轮共识过程开始之前,第一节点将接收到的全部请求放入本地存储中。随后,在共识过程开始时,各个第一节点可以从本地存储中选取一个或多个请求作为本轮共识过程中的待共识请求。假设每一轮需要共识出B个请求,则N个第一节点中的每个第一节点均基于如下操作从本地存储中选取待共识请求:(1)从本地存储中提取前B个未达成共识的请求;(2)随机选取其中的B/N个作为待共识请求。本申请实施例中的加入请求可以是指任一第一节点选取的待共识请求中的一个请求。
对于任一第一节点选取的待共识请求,均可以按照步骤203进行共识过程。根据第一节点广播的第三消息,确定每个节点接收到的所有请求。将被不少于参考数量的第一节点接收到的请求保留在共识结果中。不同的第一节点的共识结果中的请求的排序可能不同,所以可以对每个第一节点的共识结果中的请求进行哈希运算,基于哈希运算得到的哈希值对共识结果中的请求进行排序,得到最终共识结果。所有第一节点的最终共识结果中的请求排序均一致。
在步骤204中,当加入请求共识通过时,第一节点向目标节点发送第一消息,第一消息用于表示同意目标节点加入联盟链。
当联盟链对加入请求共识通过时,参与共识过程的任一第一节点向目标节点发送第一消息,用于表示该第一节点同意目标节点加入联盟链。
目标节点加入联盟链的整个过程可以如图6所示,目标节点将加入请求广播至第一节点,第一节点对加入请求进行共识过程,当加入请求共识通过时,第一节点向目标节点发送第一消息。
在一种可能实现方式中,当目标节点接收到的第一消息的数量达到参考阈值时,确认自己加入该联盟链,可以参与下一轮的共识过程。其中,参考阈值可以根据能够容错的节点数量f设置,例如,参考阈值为(f+1)等。当目标节点接收到的第一消息的数量达到(f+1)时,说明有至少一个正常的第一节点同意该目标节点加入该联盟链,由此,目标节点加入联盟链。
需要说明的是,在上述步骤201-步骤204中的任一信息传输过程中,在待传输的信息中附带发送节点的数字签名,以使接收信息的节点能够基于数字签名验证信息的有效性。其中,信息包括但不限于数据分块、第一消息、第二消息和第三消息。
在本申请实施例中,第一节点基于未进行门限加密的加入请求在联盟链中进行共识过程,当加入请求共识通过时,目标节点可以加入联盟链。在目标节点加入联盟链的过程中,无需将所有节点停机,也无需配置文件和重启节点,联盟链中的其他节点正常运行,从而能够保证联盟链在实际应用中的连续可用性,节省人工成本,目标节点加入联盟链的效率较高。
基于图1所示的实施环境,本申请实施例提供一种退出联盟链的方法,以该方法应用于包括多个第一节点和至少一个具有认证功能的第二节点的联盟链中。图7是本申请实施例提供的一种退出联盟链的方法流程图,如图7所示,本申请实施例提供的方法可以包括如下步骤:
在步骤701中,第一节点接收目标节点所广播的退出请求。
在本申请实施例中,目标节点是指联盟链中的任一第一节点,第一节点是指除目标节点之外的其他第一节点。当目标节点想要退出联盟链时,目标节点首先向联盟链中的第二节点发送退出请求,第二节点基于退出请求撤销目标节点的认证证书,将目标节点的认证证书记录在无效证书列表中,以及时更新无效证书列表。
当目标节点确认第二节点已撤销该目标节点的认证证书后,向联盟链中的第一节点广播退出请求,该退出请求用于表示该目标节点想要退出该联盟链。第一节点接收目标节点所广播的退出请求。本申请实施例对目标节点确认第二节点已撤销该目标节点的认证证书的过程不加以限定,例如,目标节点可以主动读取无效证书列表,当无效证书列表中记录有该目标节点的认证证书时,目标节点确认第二节点已撤销该目标节点的认证证书。
第一节点在接收到退出请求后,需要获取无效证书列表,以验证退出请求是否有效。第一节点在获取无效证书列表之后,即可执行步骤702。
在步骤702中,第一节点基于无效证书列表验证退出请求的有效性,无效证书列表用于记录第二节点撤销的认证证书。
第一节点基于无效证书列表验证退出请求的有效性的过程可以参考步骤202,此处不再赘述。
在步骤703中,当退出请求的有效性验证通过时,第一节点基于未进行门限加密的退出请求在联盟链中运行共识过程。
第一节点基于未进行门限加密的退出请求在联盟链中运行共识过程可以参考步骤203,此处不再赘述。
在步骤704中,当退出请求共识通过时,第一节点向目标节点发送第一消息,第一消息用于表示同意目标节点退出联盟链。
当联盟链对退出请求共识通过时,参与共识过程的任一第一节点向目标节点发送第一消息,用于表示该第一节点同意目标节点退出联盟链。
目标节点退出联盟链的整个过程可以如图8所示,目标节点将退出请求广播至第一节点,第一节点对退出请求进行共识过程,当退出请求共识通过时,第一节点向目标节点发送第一消息。
在一种可能实现方式中,当目标节点接收到的第一消息的数量达到参考阈值时,确认自己退出该联盟链,停止参与下一轮的共识过程。
在一种可能实现方式中,在目标节点需要更新信息时,可以先主动退出该联盟链,然后更新信息,基于更新后的信息向第二节点发送注册请求,获取认证证书之后,执行加入联盟链的过程,由此完成目标节点的更新。
在本申请实施例中,第一节点基于未进行门限加密的退出请求在联盟链中进行共识过程,当退出请求共识通过时,目标节点可以退出联盟链。在目标节点退出联盟链的过程中,无需将所有节点停机,也无需配置文件和重启节点,联盟链中的其他节点正常运行,从而能够保证联盟链在实际应用中的连续可用性,节省人工成本,目标节点退出联盟链的效率较高。
基于图1所示的实施环境,本申请实施例提供一种退出联盟链的方法,以该方法应用于包括多个第一节点和至少一个具有认证功能的第二节点的联盟链中。图9是本申请实施例提供的一种退出联盟链的方法流程图,如图9所示,本申请实施例提供的方法可以包括如下步骤:
在步骤901中,第一节点接收其他第一节点所广播的退出请求,退出请求用于表示目标节点为错误节点。
联盟链中的节点可能会由于宕机、网络故障或者其他原因不参与共识过程,或者在共识过程中发送错误消息,这些节点被称为错误节点。在本申请实施例中,目标节点是指错误节点,第一节点是指除错误节点之外的其他第一节点。
在联盟链中,当任一第一节点认定某一目标节点为错误节点时,可以广播退出请求,该退出请求用于表示目标节点为错误节点。由此,第一节点接收其他第一节点所广播的退出请求。
在步骤902中,第一节点基于未进行门限加密的退出请求在联盟链中进行共识过程。
此过程可以参见步骤203,此处不再赘述。
在步骤903中,当退出请求共识通过时,第一节点向第二节点发送第一消息,第一消息用于表示同意将目标节点强制退出联盟链。
当联盟链对退出请求共识通过时,参与共识过程的任一第一节点向第二节点发送第一消息,用于表示该第一节点同意将目标节点强制退出联盟链。
在一种可能实现方式中,第一节点除了向第二节点发送第一消息外,还向目标节点发送第一消息。
在步骤904中,当第二节点接收到的第一消息的数量不少于第一阈值时,将目标节点强制退出联盟链。
当第二节点接收到的第一消息的数量不少于第一阈值时,说明有足够数量的第一节点同意将目标节点强制退出联盟链,此时,第二节点撤销目标节点的认证证书,使得目标节点被强制退出联盟链。
目标节点被强制退出联盟链的整个过程可以如图10所示,第一节点1、第一节点2和第一节点3接收第一节点4所广播的退出请求,然后所有第一节点对退出请求进行共识过程,当退出请求共识通过时,第一节点向第二节点和目标节点发送第一消息。由此,目标节点被强制退出联盟链。
在本申请实施例中,第一节点基于未进行门限加密的退出请求在联盟链中进行共识过程,当退出请求共识通过时,目标节点被强制退出联盟链。在目标节点被强制退出联盟链的过程中,无需将所有节点停机,也无需配置文件和重启节点,联盟链中的其他节点正常运行,从而能够保证联盟链在实际应用中的连续可用性,节省人工成本,目标节点被强制退出联盟链的效率较高。
基于相同技术构思,参见图11,本申请实施例提供了一种加入联盟链的装置,该装置包括:
接收模块1101,用于接收目标节点所广播的加入请求;
验证模块1102,用于基于有效证书列表验证加入请求的有效性,有效证书列表用于记录第二节点颁发的认证证书;
共识模块1103,用于当加入请求的有效性验证通过时,基于未进行门限加密的加入请求在联盟链中进行共识过程;
发送模块1104,用于当加入请求共识通过时,向目标节点发送第一消息,第一消息用于表示同意目标节点加入联盟链。
在一种可能实现方式中,图12是本申请实施例提供的一种共识模块的结构示意图,参见图12,共识模块1103,包括:
分割单元11031,用于对加入请求进行分割,得到参考数量个数据分块;
发送单元11032,用于向其他第一节点发送不同的数据分块;
确定单元11033,用于当确定已接收到加入请求的其他第一节点的数量不少于第一阈值时,确定联盟链对加入请求共识通过。
在一种可能实现方式中,参见图12,共识模块1103,还包括:
广播单元11034,用于对接收到的加入请求的数据分块进行广播;
广播单元11034,还用于当第一节点接收到的数据分块的数量不少于第二阈值时,广播第二消息,第二消息用于表示已接收到足够数量的数据分块;
还原单元11035,用于当第一节点接收到的第二消息的数量不少于第三阈值时,基于已接收到的数据分块还原加入请求;
广播单元11034,还用于基于加入请求,广播第三消息,第三消息用于表示第一节点已接收到加入请求;
确定单元11033,用于当确定已接收到加入请求的第一节点的数量不少于第四阈值时,确定联盟链对加入请求共识通过。
在一种可能实现方式中,分割单元11031,用于基于纠删码算法对加入请求进行分割;
参见图12,共识模1103,还包括:
生成单元11036,用于基于数据分块生成默克尔树;
发送单元11032,用于向其他第一节点发送不同的数据分块和默克尔树的信息。
在一种可能实现方式中,参见图12,共识模块1103,还包括:
验证单元11037,用于验证接收到的数据分块的有效性;
广播单元11034,用于当第一节点接收到的有效性验证通过的数据分块的数量不少于第二阈值时,广播第二消息。
在本申请实施例中,第一节点基于未进行门限加密的加入请求在联盟链中进行共识过程,当加入请求共识通过时,目标节点可以加入联盟链。在目标节点加入联盟链的过程中,无需将所有节点停机,也无需配置文件和重启节点,联盟链中的其他节点正常运行,从而能够保证联盟链在实际应用中的连续可用性,节省人工成本,目标节点加入联盟链的效率较高。
参见图13,本申请实施例还提供了一种退出联盟链的装置,该装置包括:
接收模块1301,用于接收目标节点所广播的退出请求;
验证模块1302,用于基于无效证书列表验证退出请求的有效性,无效证书列表用于记录第二节点撤销的认证证书;
共识模块1303,用于当退出请求的有效性验证通过时,基于未进行门限加密的退出请求在联盟链中运行共识过程;
发送模块1304,用于当退出请求共识通过时,向目标节点发送第一消息,第一消息用于表示同意目标节点退出联盟链。
在一种可能实现方式中,图14是本申请实施例提供的一种共识模块的结构示意图,参见图14,共识模块1303,包括:
分割单元13031,用于对退出请求进行分割,得到参考数量个数据分块;
发送单元13032,用于向其他第一节点发送不同的数据分块;
确定单元13033,用于当确定已接收到退出请求的其他第一节点的数量不少于第一阈值时,确定联盟链对退出请求共识通过。
在一种可能实现方式中,参见图14,共识模块1303,还包括:
广播单元13034,用于对接收到的退出请求的数据分块进行广播;
广播单元13034,还用于当第一节点接收到的数据分块的数量不少于第二阈值时,广播第二消息,第二消息用于表示已接收到足够数量的数据分块;
还原单元13035,用于当第一节点接收到的第二消息的数量不少于第三阈值时,基于已接收到的数据分块还原退出请求;
广播单元13034,还用于基于退出请求,广播第三消息,第三消息用于表示第一节点已接收到退出请求;
确定单元13033,用于当确定已接收到退出请求的第一节点的数量不少于第四阈值时,确定联盟链对退出请求共识通过。
在一种可能实现方式中,分割单元13031,用于第一节点基于纠删码算法对退出请求进行分割;
参见图14,共识模块1303,还包括:
生成单元13036,用于基于数据分块生成默克尔树;
发送单元13032,用于向其他第一节点发送不同的数据分块和默克尔树的信息。
在一种可能实现方式中,参见图14,共识模块1303,还包括:
验证单元13037,用于验证接收到的数据分块的有效性;
广播单元13034,用于当第一节点接收到的有效性验证通过的数据分块的数量不少于第二阈值时,广播第二消息。
在本申请实施例中,第一节点基于未进行门限加密的退出请求在联盟链中进行共识过程,当退出请求共识通过时,目标节点可以退出联盟链。在目标节点退出联盟链的过程中,无需将所有节点停机,也无需配置文件和重启节点,联盟链中的其他节点正常运行,从而能够保证联盟链在实际应用中的连续可用性,节省人工成本,目标节点退出联盟链的效率较高。
参见图15,本申请实施例还提供了一种退出联盟链的装置,该装置包括:
接收模块1501,用于接收其他第一节点所广播的退出请求,退出请求用于表示目标节点为错误节点;
共识模块1502,用于基于未进行门限加密的退出请求在联盟链中进行共识过程;
发送模块1503,用于当退出请求共识通过时,向第二节点发送第一消息,第一消息用于表示同意将目标节点强制退出联盟链;
退出模块1504,用于当第二节点接收到的第一消息的数量不少于第一阈值时,将目标节点强制退出联盟链。
在一种可能实现方式中,图16是本申请实施例提供的一种共识模块的结构示意图,参见图16,共识模块1502,包括:
分割单元15021,用于对退出请求进行分割,得到参考数量个数据分块;
发送单元15022,用于向其他第一节点发送不同的数据分块;
确定单元15023,用于当确定已接收到退出请求的其他第一节点的数量不少于第二阈值时,确定联盟链对退出请求共识通过。
在一种可能实现方式中,参见图16,共识模块1502,还包括:
广播单元15024,用于对接收到的退出请求的数据分块进行广播;
广播单元15024,还用于当第一节点接收到的数据分块的数量不少于第三阈值时,广播第二消息,第二消息用于表示已接收到足够数量的数据分块;
还原单元15025,用于当第一节点接收到的第二消息的数量不少于第四阈值时,基于已接收到的数据分块还原退出请求;
广播单元15024,还用于基于退出请求,广播第三消息,第三消息用于表示第一节点已接收到退出请求;
确定单元15023,用于当确定已接收到退出请求的第一节点的数量不少于第五阈值时,确定联盟链对退出请求共识通过。
在一种可能实现方式中,分割单元15021,用于基于纠删码算法对退出请求进行分割;
参见图16,共识模块1502,还包括:
生成单元15026,用于基于数据分块生成默克尔树;
发送单元15022,用于向其他第一节点发送不同的数据分块和默克尔树的信息。
在一种可能实现方式中,参见图16,共识模块1502,还包括:
验证单元15027,用于验证接收到的数据分块的有效性;
广播单元15024,用于当第一节点接收到的有效性验证通过的数据分块的数量不少于第三阈值时,广播第二消息。
在本申请实施例中,第一节点基于未进行门限加密的退出请求在联盟链中进行共识过程,当退出请求共识通过时,目标节点被强制退出联盟链。在目标节点被强制退出联盟链的过程中,无需将所有节点停机,也无需配置文件和重启节点,联盟链中的其他节点正常运行,从而能够保证联盟链在实际应用中的连续可用性,节省人工成本,目标节点被强制退出联盟链的效率较高。
需要说明的是,上述实施例提供的装置在实现其功能时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的装置与方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
在示例性实施例中,还提供了一种计算机设备,图17是本申请实施例提供的一种计算机设备的结构示意图,该计算机设备包括处理器1701和存储器1702,存储器1702中存储有至少一条程序代码。该至少一条程序代码由一个或者一个以上处理器1701加载并执行,以实现上述任一种加入联盟链的方法,或者上述任一种退出联盟链的方法。
在示例性实施例中,还提供了一种计算机可读存储介质,所述存储介质中存储有至少一条程序代码,所述至少一条程序代码由计算机设备的处理器加载并执行,以实现上述任一种加入联盟链的方法,或者上述任一种退出联盟链的方法。
可选地,上述计算机可读存储介质可以是只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、只读光盘(Compact Disc Read-OnlyMemory,CD-ROM)、磁带、软盘和光数据存储设备等。
应当理解的是,在本文中提及的“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。
上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。
以上所述仅为本申请的示例性实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
Claims (10)
1.一种加入联盟链的方法,其特征在于,所述方法应用于包括多个第一节点和至少一个具有认证功能的第二节点的联盟链中,所述方法包括:
所述第一节点接收目标节点所广播的加入请求;
所述第一节点基于有效证书列表验证所述加入请求的有效性,所述有效证书列表用于记录所述第二节点颁发的认证证书;
当所述加入请求的有效性验证通过时,所述第一节点基于未进行门限加密的加入请求在所述联盟链中进行共识过程;
当所述加入请求共识通过时,所述第一节点向所述目标节点发送第一消息,所述第一消息用于表示同意所述目标节点加入所述联盟链。
2.根据权利要求1所述的方法,其特征在于,所述第一节点基于未进行门限加密的加入请求在所述联盟链中进行共识过程,包括:
所述第一节点对所述加入请求进行分割,得到参考数量个数据分块,向其他第一节点发送不同的数据分块;
当确定已接收到所述加入请求的其他第一节点的数量不少于第一阈值时,确定所述联盟链对所述加入请求共识通过。
3.根据权利要求1所述的方法,其特征在于,所述第一节点基于未进行门限加密的加入请求在所述联盟链中进行共识过程,包括:
所述第一节点对接收到的所述加入请求的数据分块进行广播;
当所述第一节点接收到的数据分块的数量不少于第二阈值时,广播第二消息,所述第二消息用于表示已接收到足够数量的数据分块;
当所述第一节点接收到的第二消息的数量不少于第三阈值时,所述第一节点基于已接收到的数据分块还原所述加入请求;
所述第一节点基于所述加入请求,广播第三消息,所述第三消息用于表示所述第一节点已接收到所述加入请求;
当确定已接收到所述加入请求的第一节点的数量不少于第四阈值时,确定所述联盟链对所述加入请求共识通过。
4.根据权利要求2所述的方法,其特征在于,所述第一节点对所述加入请求进行分割,包括:
所述第一节点基于纠删码算法对所述加入请求进行分割;
所述得到参考数量个数据分块之后,还包括:
基于所述数据分块生成默克尔树;
所述向其他第一节点发送不同的数据分块,包括:
向其他第一节点发送不同的数据分块和所述默克尔树的信息。
5.根据权利要求3所述的方法,其特征在于,所述当所述第一节点接收到的数据分块的数量不少于第二阈值时,广播第二消息之前,还包括:
所述第一节点验证接收到的数据分块的有效性;
所述当所述第一节点接收到的数据分块的数量不少于第二阈值时,广播第二消息,包括:
当所述第一节点接收到的有效性验证通过的数据分块的数量不少于第二阈值时,广播第二消息。
6.一种退出联盟链的方法,其特征在于,所述方法应用于包括多个第一节点和至少一个具有认证功能的第二节点的联盟链中,所述方法包括:
所述第一节点接收目标节点所广播的退出请求;
所述第一节点基于无效证书列表验证所述退出请求的有效性,所述无效证书列表用于记录所述第二节点撤销的认证证书;
当所述退出请求的有效性验证通过时,所述第一节点基于未进行门限加密的退出请求在所述联盟链中运行共识过程;
当所述退出请求共识通过时,所述第一节点向所述目标节点发送第一消息,所述第一消息用于表示同意所述目标节点退出所述联盟链。
7.一种退出联盟链的方法,其特征在于,所述方法应用于包括多个第一节点和至少一个具有认证功能的第二节点的联盟链中,所述方法包括:
所述第一节点接收其他第一节点所广播的退出请求,所述退出请求用于表示目标节点为错误节点;
所述第一节点基于未进行门限加密的退出请求在所述联盟链中进行共识过程;
当所述退出请求共识通过时,所述第一节点向所述第二节点发送第一消息,所述第一消息用于表示同意将所述目标节点强制退出所述联盟链;
当所述第二节点接收到的第一消息的数量不少于第一阈值时,将所述目标节点强制退出所述联盟链。
8.一种加入联盟链的装置,其特征在于,所述装置包括:
接收模块,用于接收目标节点所广播的加入请求;
验证模块,用于基于有效证书列表验证所述加入请求的有效性,所述有效证书列表用于记录所述第二节点颁发的认证证书;
共识模块,用于当所述加入请求的有效性验证通过时,基于未进行门限加密的加入请求在所述联盟链中进行共识过程;
发送模块,用于当所述加入请求共识通过时,向所述目标节点发送第一消息,所述第一消息用于表示同意所述目标节点加入所述联盟链。
9.一种退出联盟链的装置,其特征在于,所述装置包括:
接收模块,用于接收目标节点所广播的退出请求;
验证模块,用于基于无效证书列表验证所述退出请求的有效性,所述无效证书列表用于记录所述第二节点撤销的认证证书;
共识模块,用于当所述退出请求的有效性验证通过时,基于未进行门限加密的退出请求在所述联盟链中运行共识过程;
发送模块,用于当所述退出请求共识通过时,向所述目标节点发送第一消息,所述第一消息用于表示同意所述目标节点退出所述联盟链。
10.一种退出联盟链的装置,其特征在于,所述装置包括:
接收模块,用于接收其他第一节点所广播的退出请求,所述退出请求用于表示目标节点为错误节点;
共识模块,用于基于未进行门限加密的退出请求在所述联盟链中进行共识过程;
发送模块,用于当所述退出请求共识通过时,向所述第二节点发送第一消息,所述第一消息用于表示同意将所述目标节点强制退出所述联盟链;
退出模块,用于当所述第二节点接收到的第一消息的数量不少于第一阈值时,将所述目标节点强制退出所述联盟链。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910880724.2A CN110545286B (zh) | 2019-09-18 | 2019-09-18 | 加入联盟链、退出联盟链的方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910880724.2A CN110545286B (zh) | 2019-09-18 | 2019-09-18 | 加入联盟链、退出联盟链的方法、装置、设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110545286A true CN110545286A (zh) | 2019-12-06 |
CN110545286B CN110545286B (zh) | 2022-04-26 |
Family
ID=68714090
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910880724.2A Active CN110545286B (zh) | 2019-09-18 | 2019-09-18 | 加入联盟链、退出联盟链的方法、装置、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110545286B (zh) |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110992035A (zh) * | 2019-12-13 | 2020-04-10 | 中国工商银行股份有限公司 | 区块链节点管理方法、装置及系统 |
CN111324367A (zh) * | 2020-01-20 | 2020-06-23 | 链石(上海)信息科技有限公司 | 一种联盟链配置更新方法及其装置 |
CN111865608A (zh) * | 2020-07-02 | 2020-10-30 | 南京邮电大学 | 一种应用于联盟链的共识机制运行方法 |
CN111901293A (zh) * | 2020-06-08 | 2020-11-06 | 北京邮电大学 | 面向联盟链的资源恶意竞争避免方法 |
CN112511350A (zh) * | 2020-12-01 | 2021-03-16 | 浙商银行股份有限公司 | 联盟链多级共识方法、设备及存储介质 |
CN112910982A (zh) * | 2021-01-27 | 2021-06-04 | 网易(杭州)网络有限公司 | 一种联盟链的节点准入方法、装置、电子设备及存储介质 |
CN113518095A (zh) * | 2021-09-14 | 2021-10-19 | 北京华云安信息技术有限公司 | Ssh集群的部署方法、装置、设备以及存储介质 |
CN113592638A (zh) * | 2020-04-30 | 2021-11-02 | 顺丰科技有限公司 | 交易请求的处理方法、装置以及联盟链 |
WO2021254029A1 (zh) * | 2020-01-17 | 2021-12-23 | 厦门潭宏信息科技有限公司 | 一种共识和资源传输方法、设备及存储介质 |
CN114374704A (zh) * | 2021-12-29 | 2022-04-19 | 张海滨 | 可靠广播方法、装置、系统及介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107592293A (zh) * | 2017-07-26 | 2018-01-16 | 阿里巴巴集团控股有限公司 | 区块链节点间通讯方法、数字证书管理方法、装置和电子设备 |
CN109345386A (zh) * | 2018-08-31 | 2019-02-15 | 阿里巴巴集团控股有限公司 | 基于区块链的交易共识处理方法及装置、电子设备 |
JP2019103112A (ja) * | 2017-12-01 | 2019-06-24 | 株式会社bitFlyer | ブロックチェーン・ネットワークにおいてスマートコントラクトを実行可能にするための方法及び当該ネットワークを構成するためのノード |
CN107171829B (zh) * | 2017-04-24 | 2019-12-24 | 杭州趣链科技有限公司 | 一种基于bft共识算法实现的动态节点管理方法 |
-
2019
- 2019-09-18 CN CN201910880724.2A patent/CN110545286B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107171829B (zh) * | 2017-04-24 | 2019-12-24 | 杭州趣链科技有限公司 | 一种基于bft共识算法实现的动态节点管理方法 |
CN107592293A (zh) * | 2017-07-26 | 2018-01-16 | 阿里巴巴集团控股有限公司 | 区块链节点间通讯方法、数字证书管理方法、装置和电子设备 |
JP2019103112A (ja) * | 2017-12-01 | 2019-06-24 | 株式会社bitFlyer | ブロックチェーン・ネットワークにおいてスマートコントラクトを実行可能にするための方法及び当該ネットワークを構成するためのノード |
CN109345386A (zh) * | 2018-08-31 | 2019-02-15 | 阿里巴巴集团控股有限公司 | 基于区块链的交易共识处理方法及装置、电子设备 |
Cited By (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110992035A (zh) * | 2019-12-13 | 2020-04-10 | 中国工商银行股份有限公司 | 区块链节点管理方法、装置及系统 |
WO2021254029A1 (zh) * | 2020-01-17 | 2021-12-23 | 厦门潭宏信息科技有限公司 | 一种共识和资源传输方法、设备及存储介质 |
CN111324367A (zh) * | 2020-01-20 | 2020-06-23 | 链石(上海)信息科技有限公司 | 一种联盟链配置更新方法及其装置 |
CN111324367B (zh) * | 2020-01-20 | 2024-01-19 | 筹远(上海)信息科技有限公司 | 一种联盟链配置更新方法及其装置 |
CN113592638A (zh) * | 2020-04-30 | 2021-11-02 | 顺丰科技有限公司 | 交易请求的处理方法、装置以及联盟链 |
CN111901293A (zh) * | 2020-06-08 | 2020-11-06 | 北京邮电大学 | 面向联盟链的资源恶意竞争避免方法 |
CN111865608B (zh) * | 2020-07-02 | 2022-08-26 | 南京邮电大学 | 一种应用于联盟链的共识机制运行方法 |
CN111865608A (zh) * | 2020-07-02 | 2020-10-30 | 南京邮电大学 | 一种应用于联盟链的共识机制运行方法 |
CN112511350A (zh) * | 2020-12-01 | 2021-03-16 | 浙商银行股份有限公司 | 联盟链多级共识方法、设备及存储介质 |
CN112910982A (zh) * | 2021-01-27 | 2021-06-04 | 网易(杭州)网络有限公司 | 一种联盟链的节点准入方法、装置、电子设备及存储介质 |
CN113518095A (zh) * | 2021-09-14 | 2021-10-19 | 北京华云安信息技术有限公司 | Ssh集群的部署方法、装置、设备以及存储介质 |
CN113518095B (zh) * | 2021-09-14 | 2021-12-14 | 北京华云安信息技术有限公司 | Ssh集群的部署方法、装置、设备以及存储介质 |
CN114374704A (zh) * | 2021-12-29 | 2022-04-19 | 张海滨 | 可靠广播方法、装置、系统及介质 |
CN114374704B (zh) * | 2021-12-29 | 2023-07-07 | 张海滨 | 可靠广播方法、装置、系统及介质 |
Also Published As
Publication number | Publication date |
---|---|
CN110545286B (zh) | 2022-04-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110545286B (zh) | 加入联盟链、退出联盟链的方法、装置、设备及存储介质 | |
TWI711287B (zh) | 基於區塊鏈的交易共識處理方法及裝置、電子設備 | |
CN110169015B (zh) | 在分布式系统中的网络节点之间达成共识 | |
TWI705690B (zh) | 分布式網路中進行主節點變更的系統 | |
CN110178340B (zh) | 在分布式系统中进行网络节点的恢复处理 | |
WO2020258831A1 (zh) | 用于区块链系统中的主节点切换处理的方法及装置 | |
US11128522B2 (en) | Changing a master node in a blockchain system | |
CN108923932B (zh) | 一种去中心化协同验证系统及验证方法 | |
US20200403801A1 (en) | Methods and systems for automatic blockchain deployment based on cloud platform | |
CN111786812B (zh) | 节点管理方法、装置、计算机设备和存储介质 | |
KR101285281B1 (ko) | 자가조직 저장매체의 보안 시스템 및 그 방법 | |
CN113328997B (zh) | 联盟链跨链系统及方法 | |
Vassantlal et al. | Cobra: Dynamic proactive secret sharing for confidential bft services | |
CN111130770A (zh) | 基于区块链的信息存证方法、系统、用户终端、电子设备及存储介质 | |
US20200119916A1 (en) | Trustless account recovery | |
CN111683090A (zh) | 一种基于分布式存储的区块链数字签名方法及装置 | |
CN112732695B (zh) | 一种基于区块链的云存储数据安全去重方法 | |
CN111314060B (zh) | 一种密钥更新方法、设备及存储介质 | |
CN110730081A (zh) | 基于区块链网络的证书吊销方法、相关设备及介质 | |
CN112152778A (zh) | 一种节点管理方法、装置、及电子设备 | |
CN110555783A (zh) | 一种基于区块链的电力营销数据保护方法及系统 | |
KR102622665B1 (ko) | 블록체인 기반의 데이터 관리 방법 및 장치 | |
CN114389878B (zh) | 一种区块链分片方法及区块链网络系统 | |
EP4239510B1 (en) | Collaborative verification of certification computing system based on consistency proofs | |
CN111586036B (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 |