区块链数据处理方法、装置、电子设备及存储介质与流程

文档序号:30287444发布日期:2022-06-04 13:10阅读:119来源:国知局
区块链数据处理方法、装置、电子设备及存储介质与流程

1.本技术涉及区块链技术领域,特别是涉及一种区块链数据处理方法、装置、电子设备及存储介质。


背景技术:

2.相关技术中,一般通过引入世代的方式来进行待验证区块的共识处理,主节点在生成待验证区块时,会将主节点当前的世代信息添加至待验证区块中,验证节点在收到该待验证区块时,首先会判断待验证区块中的世代信息和验证节点当前的世代信息是否一致,当待验证区块中的世代信息和验证节点当前的世代信息一致时,该验证节点才会对待验证区块进行后续的共识处理。
3.然而,目前链式hotstuff共识是采用流水线的方式进行,即在第四个区块的提案阶段,同时完成第三个区块的投票阶段、第二个区块的预提交阶段以及第一个区块的提交阶段。因此,当第一个区块为用于对区块链网络进行节点配置变更的区块时,第一个区块被提交后会使得验证节点列表发生变更,验证节点的世代也会随之进行切换,此时,第一个区块后续的三个区块由于是世代切换之前生成的提案,因而在共识处理时无法进行世代信息的匹配,使得第一个区块后续的三个区块被丢弃,从而降低了共识处理的可靠性。


技术实现要素:

4.以下是对本文详细描述的主题的概述。本概述并非是为了限制权利要求的保护范围。
5.本技术实施例提供了一种区块链数据处理方法、装置、电子设备及存储介质,能够提高共识处理的可靠性。
6.一方面,本技术实施例提供了一种区块链数据处理方法,包括:接收用于对区块链网络进行节点配置变更的待验证配置变更区块;从所述待验证配置变更区块中提取出目标配置变更区块的目标区块高度;其中,所述目标配置变更区块为所述待验证配置变更区块对应的前一个已生效的配置变更区块;获取预设的第一映射信息,根据所述第一映射信息确定所述目标区块高度对应的目标验证节点列表;其中,所述第一映射信息用于表征区块高度与验证节点列表之间的对应关系,所述目标验证节点列表包括所述目标配置变更区块生效后所述区块链网络中的验证节点;根据所述目标验证节点列表校验共识处理的权限,当校验结果为校验通过时,对所述待验证配置变更区块进行共识处理。
7.另一方面,本技术实施例还提供了一种区块链数据处理方法,包括:接收用于对区块链网络进行节点配置变更的交易请求;其中,所述交易请求中携带有节点配置信息;获取目标配置变更区块的目标区块高度和所述目标配置变更区块对应的目标验
证节点列表,根据所述节点配置信息和所述目标区块高度生成待验证配置变更区块;其中,所述目标配置变更区块为所述待验证配置变更区块对应的前一个生效的配置变更区块,所述目标验证节点列表包括所述目标配置变更区块生效后所述区块链网络中的验证节点;将所述待验证配置变更区块发送至所述目标验证节点列表中的验证节点,使得所述目标验证节点列表中的验证节点根据所述目标区块高度和预设的第一映射信息确定所述目标验证节点列表,并根据所述目标验证节点列表校验共识处理的权限,当校验结果为校验通过时,使得所述目标验证节点列表中的验证节点对所述待验证配置变更区块进行共识处理。
8.另一方面,本技术实施例还提供了一种区块链数据处理装置,包括:区块接收模块,用于接收用于对区块链网络进行节点配置变更的待验证配置变更区块;区块高度提取模块,用于从所述待验证配置变更区块中提取出目标配置变更区块的目标区块高度;其中,所述目标配置变更区块为所述待验证配置变更区块对应的前一个已生效的配置变更区块;映射模块,用于获取预设的第一映射信息,根据所述第一映射信息确定所述目标区块高度对应的目标验证节点列表;其中,所述第一映射信息用于表征区块高度与验证节点列表之间的对应关系,所述目标验证节点列表包括所述目标配置变更区块生效后所述区块链网络中的验证节点;第一共识模块,用于根据所述目标验证节点列表校验共识处理的权限,当校验结果为校验通过时,对所述待验证配置变更区块进行共识处理。
9.进一步,上述区块高度提取模块具体用于:从所述待验证配置变更区块的区块头中提取出目标区块信息;从所述目标区块信息的附加字段中提取出目标配置变更区块的目标区块高度。
10.进一步,上述第一共识模块还用于:当对所述待验证配置变更区块进行共识处理的结果为达成共识时,将所述待验证配置变更区块添加至区块链,从所述目标区块信息的区块高度字段中,提取出所述待验证配置变更区块对应的更新区块高度;从所述待验证配置变更区块的区块体中提取出节点配置信息;根据所述节点配置信息确定在进行节点配置变更后所述区块链网络的更新验证节点列表;将所述更新区块高度和所述更新验证节点列表之间的对应关系添加至所述第一映射信息中。
11.进一步,上述映射模块具体用于:从内存中获取第一映射信息;其中,所述第一映射信息包括多个映射条目,各个所述映射条目包括候选区块高度和所述候选区块高度对应的候选验证节点列表;根据所述目标区块高度与所述候选区块高度的匹配关系,从多个所述候选验证节点列表中确定所述目标区块高度对应的目标验证节点列表。
12.进一步,上述映射模块具体用于:当所述映射条目为键值对、所述键值对的键信息为所述候选区块高度、所述键值
对的值信息为所述候选验证节点列表时,根据所述目标区块高度与所述键信息之间的匹配关系从多个所述值信息中确定目标值信息,根据所述目标值信息得到所述目标区块高度对应的目标验证节点列表;或者,当所述映射条目为字符串时,根据预设的划分规则对各个所述映射条目进行划分处理,得到对应所述候选区块高度的第一字符串和对应所述候选验证节点列表的第二字符串,根据所述目标区块高度与第一字符串之间的匹配关系从多个所述第二字符串中确定目标字符串,根据所述目标字符串得到所述目标区块高度对应的目标验证节点列表。
13.进一步,上述映射模块还用于:确定所述第一映射信息的容量信息;其中,所述容量信息包括所述候选区块高度的区块高度数量或者内存占用大小;当所述容量信息大于或者等于预设阈值,根据所述候选区块高度的区块高度大小或者所述映射条目的生成时间,从所述第一映射信息中删除若干个所述映射条目。
14.进一步,上述第一共识模块具体用于:根据所述目标验证节点列表确定多个第一节点标识;获取存储于本地的第二节点标识,根据所述第二节点标识与所述第一节点标识的匹配关系校验共识处理的权限;当所述第二节点标识与多个所述第一节点标识中的任意一个相匹配时,确定校验结果为校验通过,对所述待验证配置变更区块进行共识处理。
15.另一方面,本技术实施例还提供了一种区块链数据处理装置,包括:交易请求接收模块,用于接收用于对区块链网络进行节点配置变更的交易请求;其中,所述交易请求中携带有节点配置信息;区块生成模块,用于获取目标配置变更区块的目标区块高度和所述目标配置变更区块对应的目标验证节点列表,根据所述节点配置信息和所述目标区块高度生成待验证配置变更区块;其中,所述目标配置变更区块为所述待验证配置变更区块对应的前一个生效的配置变更区块,所述目标验证节点列表包括所述目标配置变更区块生效后所述区块链网络中的验证节点;第二共识模块,用于将所述待验证配置变更区块发送至所述目标验证节点列表中的验证节点,使得所述目标验证节点列表中的验证节点根据所述目标区块高度和预设的第一映射信息确定所述目标验证节点列表,并根据所述目标验证节点列表校验共识处理的权限,当校验结果为校验通过时,使得所述目标验证节点列表中的验证节点对所述待验证配置变更区块进行共识处理。
16.进一步,上述区块生成模块具体用于:从内存中获取预设的第二映射信息;其中,所述第二映射信息包括多个映射条目,各个所述映射条目包括候选区块高度和所述候选区块高度对应的候选验证节点列表;根据所述候选区块高度的区块高度大小或者所述映射条目的生成时间,从多个所述候选区块高度中确定所述目标区块高度,获取所述目标区块高度;将所述目标区块高度对应的所述候选验证节点列表确定为所述目标配置变更区块对应的目标验证节点列表,获取所述目标验证节点列表。
17.进一步,上述区块生成模块还用于:
接收程序重启指令,当所述程序重启指令执行完毕,根据区块高度大小或者区块生效时间从预设的数据库中获取历史配置变更区块;确定所述历史配置变更区块的历史区块高度以及所述历史配置变更区块对应的历史验证节点列表,所述历史验证节点列表包括所述历史配置变更区块生效后所述区块链网络中的验证节点;将所述历史区块高度作为所述目标区块高度,将所述历史验证节点列表作为所述目标验证节点列表,生成所述目标区块高度和所述目标验证节点列表对应的映射条目并预加载至所述内存中。
18.进一步,上述区块生成模块具体用于:将所述节点配置信息写入待验证配置变更区块的区块体;获取所述待验证配置变更区块对应的更新区块高度,将所述更新区块高度作为所述待验证配置变更区块的目标区块信息的区块高度字段,将所述目标区块高度作为所述目标区块信息附加字段,将所述目标区块信息写入所述待验证配置变更区块的区块头;根据所述区块体和所述区块头生成所述待验证配置变更区块。
19.另一方面,本技术实施例还提供了一种电子设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现上述的区块链数据处理方法。
20.另一方面,本技术实施例还提供了一种计算机可读存储介质,所述存储介质存储有程序,所述程序被处理器执行实现上述的区块链数据处理方法。
21.另一方面,本技术实施例还提供了一种计算机程序产品,该计算机程序产品包括计算机程序,该计算机程序存储在计算机可读存介质中。计算机设备的处理器从计算机可读存储介质读取该计算机程序,处理器执行该计算机程序,使得该计算机设备执行实现上述的区块链数据处理方法。
22.本技术实施例至少包括以下有益效果:通过从待验证配置变更区块中提取出目标配置变更区块的目标区块高度,进而可以根据预设的第一映射信息快捷地匹配出目标区块高度对应的目标验证节点列表,由于目标配置变更区块为待验证配置变更区块对应的前一个已生效的配置变更区块,因此该目标配置变更区块是被区块链网络中的验证节点达成共识的区块,而匹配得到的目标验证节点列表包括目标配置变更区块生效后区块链网络中的验证节点,因此该目标验证节点列表是有效的,且在不同的验证节点中是一致的,后续根据目标验证节点列表对待验证配置变更区块进行共识处理时,可以提高共识处理的可靠性,提高区块链网络运行的稳定性。并且,通过上述方式可以支持对连续的待验证配置变更区块进行共识处理,从而能够处理连续的节点配置变更,缩短了连续的节点配置变更的生效时延,提高节点配置变更的效率。
23.本技术的其他特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本技术而了解。本技术的目的和其他优点可通过在说明书、权利要求书以及附图中所特别指出的结构来实现和获得。
附图说明
24.附图用来提供对本技术技术方案的进一步理解,并且构成说明书的一部分,与本
申请的实施例一起用于解释本技术的技术方案,并不构成对本技术技术方案的限制。
25.图1为本技术实施例提供的链式hotstuff共识处理的流程示意图;图2为本技术实施例提供的相关技术中共识处理的一种流程示意图;图3为本技术实施例提供的相关技术中世代切换的流程示意图;图4为本技术实施例提供的一种实施环境的示意图;图5为本技术实施例提供的区块链数据处理方法的流程示意图;图6为本技术实施例提供的待验证配置变更区块的一种结构示意图;图7为本技术实施例提供的第一映射信息的一种结构示意图;图8为本技术实施例提供的第一映射信息的另一种结构示意图;图9为本技术实施例提供的应用于验证节点的区块链数据处理方法的详细流程示意图;图10为本技术实施例提供的区块链数据处理方法的流程示意图;图11为本技术实施例提供的应用于主节点的区块链数据处理方法的详细流程示意图;图12为本技术实施例提供的区块链数据处理方法的一个实际例子的示意图;图13为本技术实施例提供的区块链数据处理方法的另一个实际例子的示意图;图14为本技术实施例提供的区块链数据处理方法的另一个实际例子的示意图;图15为本技术实施例提供的区块链数据处理装置的一种结构示意图;图16为本技术实施例提供的区块链数据处理装置的另一种结构示意图;图17为本技术实施例提供的终端的部分结构框图;图18为本技术实施例提供的服务器的部分结构框图。
具体实施方式
26.为了使本技术的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本技术进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本技术,并不用于限定本技术。
27.为便于理解本技术实施例提供的技术方案,这里先对本技术实施例使用的一些关键名词进行解释:区块链(blockchain):是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。区块链本质上是一个去中心化的数据库,是一串使用密码学方法相关联产生的数据块,每一个数据块中包含了一批次网络交易的信息,用于验证其信息的有效性(防伪)和生成下一个区块。区块链可以包括区块链底层平台、平台产品服务层以及应用服务层。区块链底层平台可以包括用户管理、基础服务以及智能合约等处理模块。其中,用户管理模块负责所有区块链参与者的身份信息管理,包括维护公私钥生成(账户管理)、密钥管理以及用户真实身份和区块链地址对应关系维护(权限管理)等,并且在授权的情况下,监管和审计某些真实身份的交易情况,提供风险控制的规则配置(风控审计);基础服务模块部署在所有区块链节点设备上,用来验证业务请求的有效性,并对有效请求完成共识后记录到存储上,对于一个新的业务请求,基础服务先对接口适配解析和鉴权处理(接口适配),然后通过共识算法将业务信息加密(共识管理),在加密之后完整一致的传输至共
享账本上(网络通信),并进行记录存储;智能合约模块负责合约的注册发行以及合约触发和合约执行,开发人员可以通过某种编程语言定义合约逻辑,发布到区块链上(合约注册),根据合约条款的逻辑,调用密钥或者其它的事件触发执行,完成合约逻辑,同时还提供对合约升级注销的功能。平台产品服务层提供典型应用的基本能力和实现框架,开发人员可以基于这些基本能力,叠加业务的特性,完成业务逻辑的区块链实现。应用服务层提供基于区块链方案的应用服务给业务参与方进行使用。
28.区块:即在区块链网络上承载交易数据(即交易业务)的数据包,是一种被标记上时间戳和之前一个区块的哈希值的数据结构,区块经过网络的共识机制验证并确定区块中的交易。
29.反序列化:把字节序列恢复为对象的过程称为对象的反序列化。
30.区块高度:用于标识连接在区块链上的区块的数量,可以用于确定某个区块在区块链中的位置。
31.世代:区块链节点把时间按照时间周期划分为不同的时间段,每个时间段称为世代,每个区块都有其对应的世代。
32.主节点:也称为领导节点,为区块链中生成区块的节点。
33.验证节点:也称为共识节点,为区块链中对领导节点生成的区块进行共识处理的节点。
34.提案:主节点向验证节点发送的对某个区块进行共识处理的请求或者提议。
35.参照图1,图1为本技术实施例提供的链式hotstuff共识处理的流程示意图,对于某个区块的共识处理,需要经过提案阶段、投票阶段、预提交阶段和提交阶段,具体地:在提案阶段,区块链网络可以先按照可验证随机方式来挑选出主节点,主节点生成一个提案,并根据自身存储的验证节点列表将提案发送至对应的验证节点,验证节点接收到提案后,根据自身存储的验证节点列表(验证节点与主节点各自维护验证节点列表信息)来确定该验证节点是否需要对该提案进行投票(即该验证节点是否在验证节点列表中),若需要投票,且该提案合法,则验证节点会对提案进行签名(一个签名代表一张投票),并返回至主节点,主节点接收到足够数量的投票(例如至少2/3f+1张投票,其中,f为验证节点的总数量),则将各个验证节点的签名打包生成提案阶段的法定人数证书(quorum certificate,qc)。
36.在投票阶段,类似地,主节点将提案阶段的法定人数证书发送至对应的验证节点,若验证节点确认需要对提案阶段的法定人数证书进行投票,且提案阶段的法定人数证书合法,则验证节点会对提案阶段的法定人数证书进行签名,并返回至主节点,主节点接收到足够数量的投票,则将各个验证节点的签名打包生成投票阶段的法定人数证书。
37.在预提交阶段,类似地,主节点将投票阶段的法定人数证书发送至对应的验证节点,若验证节点确认需要对投票阶段的法定人数证书进行投票,且投票阶段的法定人数证书合法,则验证节点会对投票阶段的法定人数证书进行签名,并返回至主节点,主节点接收到足够数量的投票,则将各个验证节点的签名打包生成预提交阶段的法定人数证书。
38.在提交阶段,类似地,主节点将预提交阶段的法定人数证书发送至对应的验证节点,若验证节点确认需要对预提交阶段的法定人数证书进行投票,且预提交阶段的法定人数证书合法,则表明该提案已经被达成共识处理,对应的区块将被添加至区块链。
39.目前,链式hotstuff共识是采用流水线的方式进行,即在第四个区块的提案阶段,同时完成第三个区块的投票阶段、第二个区块的预提交阶段以及第一个区块的提交阶段。在这种情况下,若第一个区块为用于对区块链网络进行节点配置变更的区块时,即执行了第一个区块对应的交易后,会使得区块链网络中的验证节点发生变更,此时,可能会使得区块链网络中的验证节点所使用的验证节点列表不相同,导致本来合法有效的区块被诚实的验证节点验证失败。
40.例如,验证节点数量从4个增加至5个时,主节点使用新的验证节点列表,认为目前区块链网络中存在5个验证节点,需要收到至少2/3f+1张投票,即4张投票才能够达成共识,如果此时新增的验证节点使用的是旧的验证节点列表,则新增的验证节点会认为自身不需要进行投票,同时,区块链网络中原本的4个验证节点中有1个验证节点宕机了,主节点此时最多只能收到3张投票,则该区块的提案将验证不通过,验证节点无法达成共识,该区块也就无法被添加至区块链,从而影响了相关交易的进行。
41.为了解决上述问题,可以要求所有的验证节点在进行共识处理时,使用相同的验证节点列表。相关技术中,一般通过引入世代的方式来进行待验证区块的共识处理,主节点在生成待验证区块时,会将主节点当前的世代信息添加至待验证区块中,验证节点在收到该待验证区块时,首先会判断待验证区块中的世代信息和验证节点当前的世代信息是否一致,当待验证区块中的世代信息和验证节点当前的世代信息一致时,该验证节点才会对待验证区块进行后续的共识处理。
42.例如,参照图2,图2为本技术实施例提供的相关技术中共识处理的一种流程示意图,每个区块都有其对应的世代,主节点在生成提案时,会将世代信息添加到提案中,世代信息包括主节点当前世代对应的世代标识以及当前世代对应的验证节点列表。验证节点在接收到主节点发送的提案后,从提案中取出主节点对应的世代标识,与验证节点当前的世代标识进行比较,若主节点对应的世代标识与验证节点对应的世代标识不一致,则验证节点会丢弃该提案;若主节点对应的世代标识与验证节点对应的世代标识一致,则验证节点会根据提案中的验证节点列表来进行后续的验证操作(共识处理)。
43.在此基础上,参照图3,图3为本技术实施例提供的相关技术中世代切换的流程示意图,当判断出某个已经提交的区块为用于对区块链网络进行节点配置变更的配置变更区块时,则使用区块中描述的验证节点列表信息来创建新的世代,然后切换至新创建的世代,将上一个世代的信息(包括验证节点列表信息)全部销毁。在这种情况下,当第一个区块为用于对区块链网络进行节点配置变更的区块时,第一个区块被提交后会使得验证节点列表发生变更,验证节点的世代也会随之进行切换,此时,第一个区块后续的三个区块由于是世代切换之前生成的提案,对后续的三个区块进行共识处理时,验证节点已经切换至新的世代,上一个世代的验证节点列表信息已经被销毁,因而在共识处理时无法进行世代信息的匹配,使得第一个区块后续的三个区块被丢弃,从而降低了共识处理的可靠性。
44.并且,当后续的三个区块也为用于进行节点配置变更的区块时,由于第一个区块后续的三个区块被丢弃,也会导致区块链网络无法处理连续的节点配置变更。
45.基于此,本技术实施例提供了一种区块链数据处理方法、装置、电子设备及存储介质,能够提高共识处理的可靠性。
46.参照图4,图4为本技术实施例提供的一种实施环境的示意图,该实施环境包括终
端401和多个服务器402,其中,终端401和其中一个服务器402之间通过通信网络连接。服务器402为区块链网络中的一个节点服务器,多个服务器402构成上述区块链网络。
47.服务器402可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、cdn(content delivery network,内容分发网络)、以及大数据和人工智能平台等基础云计算服务的云服务器。
48.终端401可以是智能手机、平板电脑、笔记本电脑、台式计算机、智能音箱、智能手表、车载终端等,但并不局限于此。终端401以及服务器402可以通过有线或无线通信方式进行直接或间接地连接,本技术实施例在此不做限制。
49.其中,终端401可以发起对区块链网络进行节点配置变更的交易请求,并且将该交易请求发送至作为主节点的服务器402。
50.作为主节点的服务器402可以根据对区块链网络进行节点配置变更的交易请求,获取目标配置变更区块的目标区块高度和目标配置变更区块对应的目标验证节点列表,根据节点配置信息和目标区块高度生成待验证配置变更区块,并将待验证配置变更区块发送至目标验证节点列表中的目标验证节点。
51.作为验证节点的服务器402可以从待验证配置变更区块中提取出目标配置变更区块的目标区块高度,根据预设的第一映射信息确定目标区块高度对应的目标验证节点列表,并且根据目标验证节点列表对待验证配置变更区块进行共识处理。
52.本技术实施例提供的方法可应用于各种技术领域,包括但不限于区块链、云技术等技术领域。
53.参照图5,图5为本技术实施例提供的区块链数据处理方法的流程示意图,该区块链数据处理方法可以由区块链网络中作为验证节点的服务器执行,可以理解的是,若区块链网络中作为验证节点的电子设备为终端,该区块链数据处理方法也可以由终端执行,该区块链数据处理方法包括但不限于以下步骤501至步骤504。
54.步骤501:接收用于对区块链网络进行节点配置变更的待验证配置变更区块。
55.在一种可能的实现方式中,待验证配置变更区块由区块链网络中的主节点生成并对验证节点进行广播。对区块链网络进行节点配置变更,可以使得区块链网络中的验证节点列表发生变更,例如往验证节点列表中增加新的验证节点,或者从验证节点列表中删除验证节点。其中,待验证配置变更区块可以作为提案的一部分由主节点进行广播。
56.在一种可能的实现方式中,待验证配置变更区块携带有对区块链网络进行节点配置变更的节点配置信息。
57.例如,区块链网络当前的验证节点列表中包括验证节点a、验证节点b、验证节点c和验证节点d,待验证配置变更区块中携带的节点配置信息可以为“添加验证节点e”,则当该待验证配置变更区块通过共识处理被添加至区块链后(即该待验证配置变更区块生效),区块链网络的验证节点列表中包括验证节点a、验证节点b、验证节点c、验证节点d和验证节点e。又或者,待验证配置变更区块中携带的节点配置信息可以为“删除验证节点d”,则当该待验证配置变更区块通过共识处理被添加至区块链后,区块链网络的验证节点列表中包括验证节点a、验证节点b和验证节点c。
58.上述例子中的节点配置信息用于描述具体的变更动作,除此以外,节点配置信息
也可以用于直接描述进行节点配置变更后验证节点列表中的验证节点,例如,节点配置信息可以为“验证节点a、验证节点b、验证节点c、验证节点d和验证节点e”,则当该待验证配置变更区块通过共识处理被添加至区块链后,区块链网络的验证节点列表中包括验证节点a、验证节点b、验证节点c、验证节点d和验证节点e,相当于添加了验证节点e;类似地,节点配置信息也可以为“验证节点a、验证节点b和验证节点c”,则当该待验证配置变更区块通过共识处理被添加至区块链后,区块链网络的验证节点列表中包括验证节点a、验证节点b和验证节点c,相当于删除了验证节点d。
59.对于往区块链网络中添加验证节点来说,可以应用于联盟链的场景,具体地,联盟链中需要加入新的组织并且该组织需要参与区块链的共识处理,此时则需要发起新的配置变更交易往区块链网络中添加验证节点。
60.对于往区块链网络中删除验证节点来说,可以应用于联盟链的场景,具体地,联盟链中的某个组织需要退出时,则需要发起新的配置变更交易来删除对应的验证节点。又或者,当区块链网络中某个验证节点故障宕机,为了不影响其他验证节点的工作,此时也需要发起新的配置变更交易来删除故障的验证节点。
61.步骤502:从待验证配置变更区块中提取出目标配置变更区块的目标区块高度。
62.其中,目标配置变更区块为待验证配置变更区块对应的前一个已生效的配置变更区块,即,目标配置变更区块也用于对区块链网络进行节点配置变更,并且,该目标配置变更区块是被区块链网络中的验证节点达成共识的区块。
63.其中,目标配置变更区块的区块高度可以与待验证配置变更区块的区块高度相邻,此时目标配置变更区块与待验证配置变更区块为两个连续的配置变更区块;又或者,目标配置变更区块的区块高度也可以与待验证配置变更区块的区块高度不相邻,此时目标配置变更区块与待验证配置变更区块之间可以存在不用于进行节点配置变更的其他类型的区块。
64.在一种可能的实现方式中,目标配置变更区块的目标区块高度可以由主节点在生成待验证配置变更区块时添加至待验证配置变更区块。
65.例如,参照图6,图6为本技术实施例提供的待验证配置变更区块的一种结构示意图,其中,待验证配置变更区块包括区块头和区块体,区块体用于携带节点配置信息,而区块头用于携带待验证配置变更区块的目标区块信息,目标区块信息可以包括区块高度字段、时间戳字段、难度值字段等等,而在本技术实施例中,目标配置变更区块的目标区块高度可以被添加至目标区块信息的附加字段,进而不影响目标区块信息原有的其他字段,以保持目标配置变更区块的目标区块信息的完整性。
66.基于此,从待验证配置变更区块中提取出目标配置变更区块的目标区块高度时,可以从待验证配置变更区块的区块头中提取出目标区块信息,从目标区块信息的附加字段中提取出目标配置变更区块的目标区块高度,能够简便快捷地得到目标配置变更区块的目标区块高度,提高后续共识处理的效率。
67.步骤503:获取预设的第一映射信息,根据第一映射信息确定目标区块高度对应的目标验证节点列表。
68.其中,第一映射信息用于表征区块高度与验证节点列表之间的对应关系,目标验证节点列表包括目标配置变更区块生效后区块链网络中的验证节点。第一映射信息可以包
括多个映射条目,各个映射条目包括候选区块高度和候选区块高度对应的候选验证节点列表,不同的映射条目对应不同的候选区块高度。
69.在一种可能的实现方式中,第一映射信息可以预设于验证节点中,验证节点在接收到主节点发送的待验证配置变更区块时,先获取预设的第一映射信息,由于验证节点已经从待验证配置变更区块中提取出目标配置变更区块的目标区块高度,因此可以根据第一映射信息从多个候选验证节点列表中匹配出目标区块高度对应的目标验证节点列表,从而能够简便快捷地得到目标验证节点列表,提高后续共识处理的效率。
70.步骤504:根据目标验证节点列表校验共识处理的权限,当校验结果为校验通过时,对待验证配置变更区块进行共识处理。
71.其中,验证节点需要先根据目标验证节点列表确定自身是否具备对待验证配置变更区块进行共识处理的权限,即确认自身是否存在于目标验证节点列表中,若自身存在于目标验证节点列表中,校验结果为校验通过,即具备共识处理的权限。
72.例如,当前执行区块链数据处理方法的为验证节点a,虽然验证节点a接收到来自主节点的提案,即站在主节点的角度,验证节点a是具备共识处理权限的验证节点,但由于主节点可能存在异常的情况,实际上验证节点a并不是具备共识处理权限的验证节点,因而对于验证节点a来说,也需要根据自身维护的目标验证节点列表来确定自身是否具备共识处理权限,若验证节点a存在于目标验证节点列表中,则表明验证节点a具备共识处理权限,即验证节点a需要对待验证配置变更区块进行共识处理,进而得到待验证配置变更区块对应的共识结果;若验证节点a不存在于目标验证节点列表中,则表明验证节点a不具备共识处理权限,即验证节点a不需要对待验证配置变更区块进行共识处理。
73.在一种可能的实现方式中,可以根据目标验证节点列表确定多个第一节点标识,获取存储于本地的第二节点标识,根据第二节点标识与第一节点标识的匹配关系校验共识处理的权限,当第二节点标识与多个第一节点标识中的任意一个相匹配时,确定校验结果为校验通过,对待验证配置变更区块进行共识处理。具体地,目标验证节点列表中可以包括多个第一节点标识,例如第一节点标识“a”、第一节点标识“b”、第一节点标识“c”、第一节点标识“d”,第一节点标识“a”对应验证节点a,以此类推。若当前执行区块链数据处理方法的为验证节点a,验证节点a的本地会存储对应的第二节点标识“a”,此时,第二节点标识“a”与第一节点标识“a”相匹配,表明验证节点a具备共识处理权限,可以对待验证配置变更区块进行共识处理。通过第一节点标识和第二节点标识进行匹配的方式能够快捷地确定验证节点是否具备共识处理权限,进而提高共识处理的效率。
74.可见,由于目标配置变更区块为待验证配置变更区块对应的前一个已生效的配置变更区块,因此该目标配置变更区块是被区块链网络中的验证节点达成共识的区块,而匹配得到的目标验证节点列表包括目标配置变更区块生效后区块链网络中的验证节点,因此该目标验证节点列表是有效的,且在不同的验证节点中是一致的,后续根据目标验证节点列表对待验证配置变更区块进行共识处理时,可以提高共识处理的可靠性,提高区块链网络运行的稳定性。
75.另外,当待验证配置变更区块的数量为多个且连续时,通过上述方式可以支持对连续的待验证配置变更区块进行共识处理,从而能够处理连续的节点配置变更,缩短了连续的节点配置变更的生效时延,提高节点配置变更的效率。
76.在一种可能的实现方式中,第一映射信息可以预设于内存中,即获取预设的第一映射信息,根据第一映射信息确定目标区块高度对应的目标验证节点列表时,具体可以从内存中获取第一映射信息,根据目标区块高度与候选区块高度的匹配关系,从多个候选验证节点列表中确定目标区块高度对应的目标验证节点列表。
77.例如,目标区块高度为h1,映射条目包括h1-l1、h2-l2、h3-l3(即候选区块高度h1对应候选验证节点列表l1,候选区块高度h2对应候选验证节点列表l2,候选区块高度h3对应候选验证节点列表l3),则目标区块高度h1对应的目标验证节点列表为候选验证节点列表l1。
78.通过将第一映射信息预设于内存中,可以加快第一映射信息的获取速度,提高后续共识处理的效率。并且,相较于将第一映射信息预设于验证节点的区块链数据库中,将第一映射信息预设于内存中能够降低对区块链数据库的存储空间占用。
79.参照图7,图7为本技术实施例提供的第一映射信息的一种结构示意图,在一种可能的实现方式中,映射条目可以为键值对,相应地,键值对的键信息为候选区块高度、键值对的值信息为候选验证节点列表,进而可以形成图7所示的结构,即高度1、高度2、高度3和高度4为键信息,验证节点列表1、验证节点列表2、验证节点列表3和验证节点列表4为对应的值信息。
80.这种情况下,根据目标区块高度与候选区块高度的匹配关系,从多个候选验证节点列表中确定目标区块高度对应的目标验证节点列表时,可以根据目标区块高度与键信息之间的匹配关系从多个值信息中确定目标值信息,根据目标值信息得到目标区块高度对应的目标验证节点列表。
81.另外,参照图8,图8为本技术实施例提供的第一映射信息的另一种结构示意图,在一种可能的实现方式中,映射条目也可以为字符串,即,候选区块高度和候选验证节点列表可以首尾相连成一个字符串,进而可以形成图8所示的结构,例如字符串“0100abcd”、“0101abc”、“0102ac”、“0103ab”等等。
82.这种情况下,根据目标区块高度与候选区块高度的匹配关系,从多个候选验证节点列表中确定目标区块高度对应的目标验证节点列表时,可以根据预设的划分规则对各个映射条目进行划分处理,得到对应候选区块高度的第一字符串和对应候选验证节点列表的第二字符串,根据目标区块高度与第一字符串之间的匹配关系从多个第二字符串中确定目标字符串,根据目标字符串得到目标区块高度对应的目标验证节点列表。
83.其中,划分规则可以是:映射条目对应的字符串的前4位字符所组成的第一字符串为候选区块高度,剩余的字符所组成的第二字符串为候选验证节点列表。以字符串“0100abcd”为例,第一字符串为“0100”,代表候选区块高度,第二字符串为“abcd”,代表候选验证节点列表。可以理解的是,预设的划分规则可以根据实际情况而定,例如可以视验证节点的总数量来增加第一字符串的位数,即第一字符串可以为“00100”,另外,第二字符串可以根据不同的验证节点的节点标识来确定,例如第二字符串也可以为“a1a2a3a4”,本技术实施例不做限定。
84.在一种可能的实现方式中,当对待验证配置变更区块进行共识处理的结果为达成共识时,可以将待验证配置变更区块添加至区块链,从目标区块信息的区块高度字段中提取出待验证配置变更区块对应的更新区块高度,从待验证配置变更区块的区块体中提取出
节点配置信息,根据节点配置信息确定在进行节点配置变更后区块链网络的更新验证节点列表,将更新区块高度和更新验证节点列表之间的对应关系添加至第一映射信息中。
85.具体地,将待验证配置变更区块添加至区块链后,待验证配置变更区块对应的节点配置变更动作生效,此时区块链网络的验证节点列表发生变化,因此,为了便于下一次的共识处理,将更新区块高度和更新验证节点列表之间的对应关系添加至第一映射信息中,以达到第一映射信息的更新效果,使得下一次的共识处理能够准确地根据目标区块高度确定对应的目标验证节点列表,从而提高共识处理的可靠性,提高区块链网络运行的稳定性,其中,更新区块高度为待验证配置变更区块对应的区块高度。
86.例如,在进行节点配置变更前,区块链网络的验证节点列表中包括验证节点a、验证节点b、验证节点c和验证节点d,节点配置信息为“添加验证节点e”,则待验证配置变更区块生效后(即进行节点配置变更后),区块链网络的更新验证节点列表lm中包括验证节点a、验证节点b、验证节点c、验证节点d和验证节点e,待验证配置变更区块的更新区块高度为hm,则将对应关系hm-lm作为新的映射条目添加至第一映射信息中。
87.在一种可能的实现方式中,验证节点中可以设置有共识模块,待验证配置变更区块被提交成功后,验证节点可以调用共识模块的回调方法,以通知共识模块,某个区块高度的区块被提交成功,进而触发上述对第一映射信息的更新动作。
88.在一种可能的实现方式中,除了将第一映射信息存储在内存中以外,还可以进一步将第一映射信息存储在预写日志系统(write-ahead logging,wal)中,从而能够保持第一映射信息的数据原子性和数据持久性。
89.在一种可能的实现方式中,往第一映射信息中添加了新的映射条目之后,可以确定第一映射信息的容量信息,当第一映射信息的容量信息大于或者等于预设阈值,根据候选区块高度的区块高度大小或者映射条目的生成时间,从第一映射信息中删除若干个映射条目。
90.其中,容量信息可以包括候选区块高度的区块高度数量,区块高度数量越大,表明内存占用大小越大,相应地预设阈值为区块高度数量阈值;另外,容量信息也可以包括内存占用大小,相应地预设阈值为内存占用大小阈值。
91.其中,区块高度大小越小,表明对应的映射条目的生成时间越早,当第一映射信息的容量信息大于或者等于预设阈值时,可以从第一映射信息中删除区块高度数量较小或者生成时间较早的映射条目,从而可以降低内存的占用,提高验证节点运行的稳定性。
92.可以理解的是,预设阈值可以根据实际需求而定,例如,当容量信息可以包括候选区块高度的区块高度数量时,预设阈值可以是3个,因为在链式hotstuff共识处理的应用场景中,待验证配置变更区块最多比前一个生效的区块,高出3个区块高度。另外,删除的映射条目的数量也可以根据实际需求而定,例如可以是1个或者2个,本技术实施例不做限定。
93.在一种可能的实现方式中,从第一映射信息中删除若干个映射条目,除了在往第一映射信息中添加了新的映射条目之后执行以外,也可以在往第一映射信息中添加了新的映射条目之前执行,例如,可以根据预设频率定期从第一映射信息中删除若干个映射条目,本技术实施例不做限定。
94.下面说明本技术实施例提供的应用于验证节点的区块链数据处理方法的详细流程。
95.参照图9,图9为本技术实施例提供的应用于验证节点的区块链数据处理方法的详细流程示意图,具体包括以下步骤901至步骤906。
96.步骤901:反序列化待验证配置变更区块的目标区块信息;步骤902:从目标区块信息中提取出目标配置变更区块的目标区块高度;步骤903:从内存中查询目标区块高度对应的目标验证节点列表;步骤904:判断是否能够成功查询到目标验证节点列表,若是,跳转步骤905,否则跳转步骤906;步骤905:根据目标验证节点列表对待验证配置变更区块进行共识处理,结束流程;步骤906:确定对待验证配置变更区块共识失败,结束流程。
97.其中,若确定对待验证配置变更区块共识失败,则验证节点可以向主节点返回异常消息。可以理解的是,由于区块链网络中存在多个验证节点,即使当前的验证节点对待验证配置变更区块共识失败,只要区块链网络中的其他验证节点达成共识并且达成共识的验证节点的数量达到要求,该待验证配置变更区块仍然可以被添加至区块链中。若该待验证配置变更区块确实为合法、有效的区块,由于当前的验证节点共识失败,后续可以根据区块链网络的同步机制将待验证配置变更区块同步至当前共识失败的验证节点中,进而完成将待验证配置变更区块添加至区块链的动作,从而提高执行待验证配置变更区块对应的交易的可靠性。其中,上述同步机制可以基于验证节点的同步模块实现。
98.在一种可能的实现方式中,验证节点接收到的区块并不一定为用于对区块链网络进行节点配置变更的配置变更区块,也有可能是普通的交易区块,因此,在上述步骤901前,验证节点可以先对接收到的区块的类型进行判断,当判断出当前接收到的区块为用于对区块链网络进行节点配置变更的配置变更区块时,再进一步执行上述步骤901至步骤906。相应地,若对某个区块进行共识处理的结果为达成共识时,验证节点可以进一步判断该达成共识的区块的类型,当判断出该达成共识的区块为用于对区块链网络进行节点配置变更的配置变更区块时,再将该达成共识的区块对应的区块高度和验证节点列表添加至内存的第一映射信息中,以减小第一映射信息中的无效对应关系,达到对第一映射信息的结构优化效果。
99.参照图10,图10为本技术实施例提供的区块链数据处理方法的流程示意图,该区块链数据处理方法可以由区块链网络中作为主节点的服务器执行,可以理解的是,若区块链网络中作为主节点的电子设备为终端,该区块链数据处理方法也可以由终端执行,该区块链数据处理方法包括但不限于以下步骤1001至步骤1003。
100.步骤1001:接收用于对区块链网络进行节点配置变更的交易请求。
101.其中,交易请求中携带有节点配置信息,节点配置信息可以参见前述的解释,在此不再赘述。
102.步骤1002:获取目标配置变更区块的目标区块高度和目标配置变更区块对应的目标验证节点列表,根据节点配置信息和目标区块高度生成待验证配置变更区块。
103.其中,目标配置变更区块为待验证配置变更区块对应的前一个生效的配置变更区块,即目标配置变更区块与待验证配置变更区块的区块高度相邻,又或者与待验证配置变更区块的区块高度不相邻。
104.其中,由于目标配置变更区块为待验证配置变更区块对应的前一个已生效的配置变更区块,目标验证节点列表包括目标配置变更区块生效后区块链网络中的验证节点,因此该目标配置变更区块是被区块链网络中的验证节点达成共识的区块,可以根据目标区块高度确定对应的目标验证节点列表,该目标验证节点列表是有效的,且与在不同的验证节点中的目标验证节点列表相一致,后续根据目标验证节点列表对待验证配置变更区块进行共识处理时,可以提高共识处理的可靠性,提高区块链网络运行的稳定性。
105.步骤1003:将待验证配置变更区块发送至目标验证节点列表中的验证节点,使得目标验证节点列表中的验证节点根据目标区块高度和预设的第一映射信息确定目标验证节点列表,并根据目标验证节点列表校验共识处理的权限,当校验结果为校验通过时,使得目标验证节点列表中的验证节点对待验证配置变更区块进行共识处理。
106.其中,主节点可以通过目标验证节点列表确认当前对待验证配置变更区块进行共识处理的验证节点,例如,目标验证节点列表中包括验证节点a、验证节点b、验证节点c和验证节点d,则目标验证节点为验证节点a、验证节点b、验证节点c和验证节点d,主节点会将待验证配置变更区块发送至验证节点a、验证节点b、验证节点c和验证节点d。
107.验证节点接收到待验证配置变更区块后,可以根据预设的第一映射信息确定目标区块高度对应的目标验证节点列表,并在根据目标验证节点列表确定具备共识处理权限时,对待验证配置变更区块进行共识处理,目标验证节点根据预设的第一映射信息确定目标区块高度对应的目标验证节点列表的原理可参见前述的解释,在此不再赘述。
108.在一种可能的实现方式中,获取目标配置变更区块的目标区块高度和目标配置变更区块对应的目标验证节点列表时,具体可以从内存中获取预设的第二映射信息,根据候选区块高度的区块高度大小或者映射条目的生成时间,从多个候选区块高度中确定目标区块高度,获取目标区块高度,将目标区块高度对应的候选验证节点列表确定为目标配置变更区块对应的目标验证节点列表,获取目标验证节点列表。
109.具体地,第二映射信息可以预设于主节点中,第二映射信息与第一映射信息的原理相类似,可参见前述的解释,在此不再赘述。主节点在生成待验证配置变更区块时,需要根据目标区块高度和第二映射信息来确定对应的目标验证节点列表,其中,由于目标配置变更区块为待验证配置变更区块对应的前一个已生效的配置变更区块,因此主节点可以根据候选区块高度的区块高度大小或者映射条目的生成时间来确定目标区块高度,例如区块高度越高的候选区块高度为目标区块高度,或者生成时间越晚的映射条目中的候选区块高度为目标区块高度。相应地,目标区块高度对应的候选验证节点即为目标验证节点列表。类似地,通过第二映射信息能够简便快捷地得到目标验证节点列表,提高后续共识处理的效率。
110.在一种可能的实现方式中,对于主节点来说,当主节点接收程序重启指令且程序重启指令执行完毕后,主节点的内存中的第二映射信息会被清除,此时,主节点也可以根据区块高度大小或者区块生效时间从预设的数据库中获取历史配置变更区块,确定历史配置变更区块的历史区块高度以及历史配置变更区块对应的历史验证节点列表,将历史区块高度作为目标区块高度,将历史验证节点列表作为目标验证节点列表,生成目标区块高度和目标验证节点列表对应的映射条目并预加载至内存中。
111.其中,预设的数据库可以为主节点的区块链数据库,历史配置变更区块的区块高
度大小可以是区块链数据库中最高的,或者历史配置变更区块的生效时间可以是区块链数据库中最晚的,历史验证节点列表包括历史配置变更区块生效后区块链网络中的验证节点。每当有区块被添加至区块链,区块链网络中的节点都会将该区块存储于自身的区块链数据库中,当主节点重启以后,由于主节点为对待验证配置变更区块进行共识处理的发起者,因此从主节点的区块链数据库中获取到的历史配置变更区块一般为待验证配置变更区块前一个已生效的配置变更区块,进而可以根据该历史配置变更区块携带的节点配置信息解释得到对应的历史验证节点列表,该历史配置变更区块的历史区块高度可以作为有效的目标区块高度,该历史验证节点列表可以作为有效的目标验证节点列表,从而能够生成目标区块高度和目标验证节点列表对应的映射条目并预加载至内存中,后续主节点即可从内存中获取对应的映射条目,避免出现主节点在重启后无法获取到目标区块高度和目标验证节点列表的情况,从而提高主节点生成待验证配置变更区块的稳定性。
112.可以理解的是,主节点从区块链数据库中获取历史区块高度以及历史验证节点列表以后,也可以直接生成对应的映射条目,但是预加载至内存中,能够提升共识处理的效率。
113.当然,当待验证配置变更区块前一个配置变更区块正在共识处理中未存储至区块链数据库,或者主节点的区块链数据库出现故障等情况下,从主节点的区块链数据库中获取到的历史配置变更区块可能不是待验证配置变更区块前一个已生效的配置变更区块,即此时的历史验证节点列表并不是最新的,基于历史验证节点列表对待验证配置变更区块进行共识处理可能会失败,此时主节点可以向终端发送通知消息,以通知终端在一段时间以后重新发起交易请求。
114.在一种可能的实现方式中,主节点在根据节点配置信息和目标区块高度生成待验证配置变更区块时,可以将节点配置信息写入待验证配置变更区块的区块体;获取待验证配置变更区块对应的更新区块高度,将更新区块高度作为待验证配置变更区块的目标区块信息的区块高度字段,将目标区块高度作为目标区块信息附加字段,将目标区块信息写入待验证配置变更区块的区块头;根据区块体和区块头生成待验证配置变更区块。
115.其中,将目标区块高度添加至目标区块信息的附加字段,不影响目标区块信息原有的其他字段,以保持目标配置变更区块的目标区块信息的完整性。
116.类似地,对于主节点来说,当对待验证配置变更区块的共识处理的结果为达成共识时,同样会将待验证配置变更区块添加至区块链,从目标区块信息的区块高度字段中提取出待验证配置变更区块对应的更新区块高度,从待验证配置变更区块的区块体中提取出节点配置信息,根据节点配置信息确定在进行节点配置变更后区块链网络的更新验证节点列表,将更新区块高度和更新验证节点列表之间的对应关系添加至第二映射信息中,以达到第二映射信息的更新效果,使得下一次的共识处理能够准确地确定目标验证节点列表,从而提高共识处理的可靠性,提高区块链网络运行的稳定性。
117.类似地,主节点也可以确定第二映射信息的容量信息,当第二映射信息的容量信息大于或者等于预设阈值,根据候选区块高度的区块高度大小或者映射条目的生成时间,从第二映射信息中删除若干个映射条目,当第二映射信息的容量信息大于或者等于预设阈值时,可以从第二映射信息中删除区块高度数量较小或者生成时间较早的映射条目,从而可以降低内存的占用,提高主节点运行的稳定性。
118.参照图11,图11为本技术实施例提供的应用于主节点的区块链数据处理方法的详细流程示意图,具体包括以下步骤1101至步骤1108。
119.步骤1101:接收携带节点配置信息的配置变更请求,根据节点配置信息生成待验证配置变更区块;步骤1102:从内存中查询最大的区块高度对应的目标验证节点列表;步骤1103:判断是否能够成功从内存中查询到目标验证节点列表,若是,跳转步骤1104,否则跳转步骤1105;步骤1104:将该最大的区块高度添加至待验证配置变更区块,将待验证配置变更区块发送至目标验证节点列表中的验证节点,以对待验证配置变更区块进行共识处理,结束流程;步骤1105:从区块链数据库中查询最新已提交至区块链的配置变更区块;步骤1106:判断是否能够成功从区块链数据库中查询到最新已提交至区块链的配置变更区块,若是,跳转步骤1107,否则跳转步骤1108;步骤1107:从最新已提交至区块链的配置变更区块中解析出目标验证节点列表,跳转步骤1104;步骤1108:确定对待验证配置变更区块共识失败,结束流程。
120.下面以一个实际例子说明本技术实施例提供的区块链数据处理方法的完整流程。
121.参照图12,图12为本技术实施例提供的区块链数据处理方法的一个实际例子的示意图,当前区块链网络包括主节点、验证节点a、验证节点b、验证节点c和验证节点d,具体地:终端向主节点发送用于对区块链网络进行节点配置变更的交易请求,请求往区块链网络中添加一个验证节点e;主节点根据交易请求生成待验证配置变更区块,从内存中获取预设的第二映射信息,第二映射信息中存在区块高度1与验证节点列表1、区块高度2与验证节点列表2、区块高度3与验证节点列表3的映射条目,由于区块高度3的高度最高,因此将区块高度3添加至待验证配置变更区块的附加字段;主节点根据区块高度3所对应的验证节点列表3(为便于理解,图中展示为验证节点abcd),确认当前区块链网络的验证节点为验证节点a、验证节点b、验证节点c和验证节点d,向验证节点a、验证节点b、验证节点c和验证节点d广播对待验证配置变更区块进行共识处理的提案,提案中携带有该待验证配置变更区块;验证节点a、验证节点b、验证节点c和验证节点d分别接收到提案,从待验证配置变更区块中提取出该区块高度3,从内存中获取预设的第一映射信息,根据该区块高度3匹配出对应的验证节点列表3,根据验证节点列表3确认自身是否具备共识处理权限,若确定具备共识处理权限,对待验证配置变更区块进行共识处理,将共识结果返回至主节点;经过提案阶段、投票阶段、预提交阶段和提交阶段后各个验证节点达成对待验证配置变更区块的共识,主节点、验证节点a、验证节点b、验证节点c和验证节点d均将待验证配置变更区块添加至区块链;主节点根据待验证配置变更区块,确定进行节点配置变更后区块链网络的验证节点为验证节点a、验证节点b、验证节点c、验证节点d和验证节点e,作为对应的验证节点列表
4(为便于理解,图中展示为验证节点abcde),并确定待验证配置变更区块的区块高度为区块高度4,将区块高度4与验证节点列表4之间的对应关系添加至第二映射信息中,并删除区块高度1与验证节点列表1之间的对应关系;验证节点a、验证节点b、验证节点c和验证节点d分别根据待验证配置变更区块,确定进行节点配置变更后区块链网络的验证节点为验证节点a、验证节点b、验证节点c、验证节点d和验证节点e,作为对应的验证节点列表4,并确定待验证配置变更区块的区块高度为区块高度4,将区块高度4与验证节点列表4之间的对应关系添加至第一映射信息中,并删除区块高度1与验证节点列表1之间的对应关系;在该待验证配置变更区块被添加至区块链之前,验证节点e还是一个同步节点,在该待验证配置变更区块被添加至区块链之后,基于区块链网络的数据同步机制,验证节点e也会接收到该待验证配置变更区块并添加至区块链,并且将区块高度4与验证节点列表4之间的对应关系添加至自身内存的映射信息中,在下一次共识处理时,验证节点e可以正常作为验证节点进行共识处理。
122.下面以另一个实际例子说明本技术实施例提供的区块链数据处理方法的完整流程。
123.参照图13,图13为本技术实施例提供的区块链数据处理方法的另一个实际例子的示意图,当前区块链网络包括主节点、验证节点a、验证节点b、验证节点c和验证节点d,具体地:终端向主节点发送用于对区块链网络进行节点配置变更的交易请求,请求往区块链网络中删除验证节点d;主节点根据交易请求生成待验证配置变更区块,从内存中获取预设的第二映射信息,第二映射信息中存在区块高度1与验证节点列表1、区块高度2与验证节点列表2、区块高度3与验证节点列表3的映射条目,由于区块高度3的高度最高,因此将区块高度3添加至待验证配置变更区块的附加字段;主节点根据区块高度3所对应的验证节点列表3(为便于理解,图中展示为验证节点abcd),确认当前区块链网络的验证节点为验证节点a、验证节点b、验证节点c和验证节点d,向验证节点a、验证节点b、验证节点c和验证节点d广播对待验证配置变更区块进行共识处理的提案,提案中携带有该待验证配置变更区块;验证节点a、验证节点b、验证节点c和验证节点d分别接收到提案,从待验证配置变更区块中提取出该区块高度3,从内存中获取预设的第一映射信息,根据该区块高度3匹配出对应的验证节点列表3,根据验证节点列表3确认自身是否具备共识处理权限,若确定具备共识处理权限,对待验证配置变更区块进行共识处理,将共识结果返回至主节点;经过提案阶段、投票阶段、预提交阶段和提交阶段后各个验证节点达成对待验证配置变更区块的共识,主节点、验证节点a、验证节点b、验证节点c和验证节点d均将待验证配置变更区块添加至区块链;主节点根据待验证配置变更区块,确定进行节点配置变更后区块链网络的验证节点为验证节点a、验证节点b和验证节点c,作为对应的验证节点列表4(为便于理解,图中展示为验证节点abc),并确定待验证配置变更区块的区块高度为区块高度4,将区块高度4与验证节点列表4之间的对应关系添加至第二映射信息中,并删除区块高度1与验证节点列表
1之间的对应关系;验证节点a、验证节点b、验证节点c和验证节点d分别根据待验证配置变更区块,确定进行节点配置变更后区块链网络的验证节点为验证节点a、验证节点b和验证节点c,作为对应的验证节点列表4,并确定待验证配置变更区块的区块高度为区块高度4,将区块高度4与验证节点列表4之间的对应关系添加至第一映射信息中,并删除区块高度1与验证节点列表1之间的对应关系;对于验证节点d来说,在该待验证配置变更区块被添加至区块链之后,验证节点d不再作为区块链网络的验证节点。
124.下面以另一个实际例子说明本技术实施例提供的区块链数据处理方法的完整流程。
125.参照图14,图14为本技术实施例提供的区块链数据处理方法的另一个实际例子的示意图,当前区块链网络包括主节点、验证节点a、验证节点b、验证节点c和验证节点d,并且主节点刚刚经过重启,具体地:终端向主节点发送用于对区块链网络进行节点配置变更的交易请求,请求往区块链网络中删除验证节点d;主节点根据交易请求生成待验证配置变更区块,从内存中获取预设的第二映射信息,此时由于主节点刚刚经过重启,内存中的第二映射信息被清空,主节点可以从区块链数据库中获取区块高度最高的配置变更区块,将该配置变更区块的区块高度3和对应的验证节点列表3预加载至内存中,再从内存中读取出区块高度3,将区块高度3添加至待验证配置变更区块的附加字段;后续的处理过程与图13所示的例子相类似,在此不再赘述。
126.可以理解的是,图12与图13所示的例子中,主节点和各个验证节点内存中的映射信息均相同,图14中所示的例子中,主节点的内存和区块链数据库中的映射信息均相同,实际上图12、图13和图14仅仅用作原理性的说明,主节点和各个验证节点内存中的映射信息也可以部分不相同,主节点的内存和区块链数据库中的映射信息也可以部分不相同,视区块链网络的运行情况而定,本技术实施例不做限定。
127.可以理解的是,在最极端的情况下,假设所有的待验证区块均为配置变更区块,那么在生成第五个区块时,指定使用第一个区块所对应的验证节点列表来对第五个区块进行共识处理,而在生成第六个区块时,指定使用第二个区块所对应的验证节点列表来对第六个区块进行共识处理,以此类推,那么看起来配置变更分裂成了不同的链路:第一个区块-第五个区块-第九个区块,第二个区块-第六个区块-第十个区块,......实际上,基于本技术实施例提供的区块链数据处理方法,仅仅改变了对待验证配置变更区块进行共识处理时使用的验证节点列表,并不影响配置变更区块中配置变更交易的执行顺序,也就是说,配置变更交易的处理顺序并不会因为本技术实施例提供的区块链数据处理方法而受到影响,配置变更交易的处理顺序依然与区块高度的顺序一致,即第一个区块-第二个区块-第三个区块-第四个区块......可以理解的是,虽然上述各个流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本实施例中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,上述流程图
中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时间执行完成,而是可以在不同的时间执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。
128.需要说明的是,在本技术的各个具体实施方式中,当涉及到需要根据目标对象属性信息或属性信息集合等与目标对象特性相关的数据进行相关处理时,都会先获得目标对象的许可或者同意,而且,对这些数据的收集、使用和处理等,都会遵守相关国家和地区的相关法律法规和标准。此外,当本技术实施例需要获取目标对象属性信息时,会通过弹窗或者跳转到确认页面等方式获得目标对象的单独许可或者单独同意,在明确获得目标对象的单独许可或者单独同意之后,再获取用于使本技术实施例能够正常运行的必要的目标对象相关数据。
129.参照图15,图15为本技术实施例提供的区块链数据处理装置的一种结构示意图,该第一区块链数据处理装置1500包括:区块接收模块1501,用于接收用于对区块链网络进行节点配置变更的待验证配置变更区块;区块高度提取模块1502,用于从待验证配置变更区块中提取出目标配置变更区块的目标区块高度;其中,目标配置变更区块为待验证配置变更区块对应的前一个已生效的配置变更区块;映射模块1503,用于获取预设的第一映射信息,根据第一映射信息确定目标区块高度对应的目标验证节点列表;其中,第一映射信息用于表征区块高度与验证节点列表之间的对应关系,目标验证节点列表包括目标配置变更区块生效后区块链网络中的验证节点;第一共识模块1504,用于根据目标验证节点列表校验共识处理的权限,当校验结果为校验通过时,对待验证配置变更区块进行共识处理。
130.进一步,上述区块高度提取模块1502具体用于:从待验证配置变更区块的区块头中提取出目标区块信息;从目标区块信息的附加字段中提取出目标配置变更区块的目标区块高度。
131.进一步,上述第一共识模块1504还用于:当对待验证配置变更区块进行共识处理的结果为达成共识时,将待验证配置变更区块添加至区块链,从目标区块信息的区块高度字段中,提取出待验证配置变更区块对应的更新区块高度;从待验证配置变更区块的区块体中提取出节点配置信息;根据节点配置信息确定在进行节点配置变更后区块链网络的更新验证节点列表;将更新区块高度和更新验证节点列表之间的对应关系添加至第一映射信息中。
132.进一步,上述映射模块1503具体用于:从内存中获取第一映射信息;其中,第一映射信息包括多个映射条目,各个映射条目包括候选区块高度和候选区块高度对应的候选验证节点列表;根据目标区块高度与候选区块高度的匹配关系,从多个候选验证节点列表中确定目标区块高度对应的目标验证节点列表。
133.进一步,上述映射模块1503具体用于:当映射条目为键值对、键值对的键信息为候选区块高度、键值对的值信息为候选验证节点列表时,根据目标区块高度与键信息之间的匹配关系从多个值信息中确定目标值信息,根据目标值信息得到目标区块高度对应的目标验证节点列表;或者,当映射条目为字符串时,根据预设的划分规则对各个映射条目进行划分处理,得到对应候选区块高度的第一字符串和对应候选验证节点列表的第二字符串,根据目标区块高度与第一字符串之间的匹配关系从多个第二字符串中确定目标字符串,根据目标字符串得到目标区块高度对应的目标验证节点列表。
134.进一步,上述映射模块1503还用于:确定第一映射信息的容量信息;其中,容量信息包括候选区块高度的区块高度数量或者内存占用大小;当容量信息大于或者等于预设阈值,根据候选区块高度的区块高度大小或者映射条目的生成时间,从第一映射信息中删除若干个映射条目。
135.进一步,上述第一共识模块1504具体用于:根据目标验证节点列表确定多个第一节点标识;获取存储于本地的第二节点标识,根据第二节点标识与第一节点标识的匹配关系校验共识处理的权限;当第二节点标识与多个第一节点标识中的任意一个相匹配时,确定校验结果为校验通过,对待验证配置变更区块进行共识处理。
136.第一区块链数据处理装置1500与上述应用于验证节点的区块链数据处理方法基于相同的发明构思,因此第一区块链数据处理装置1500通过从待验证配置变更区块中提取出目标配置变更区块的目标区块高度,进而可以根据预设的第一映射信息快捷地匹配出目标区块高度对应的目标验证节点列表,由于目标配置变更区块为待验证配置变更区块对应的前一个已生效的配置变更区块,因此该目标配置变更区块是被区块链网络中的验证节点达成共识的区块,而匹配得到的目标验证节点列表包括目标配置变更区块生效后区块链网络中的验证节点,因此该目标验证节点列表是有效的,且在不同的验证节点中是一致的,后续根据目标验证节点列表对待验证配置变更区块进行共识处理时,可以提高共识处理的可靠性,提高区块链网络运行的稳定性。并且,通过上述方式可以支持对连续的待验证配置变更区块进行共识处理,从而能够处理连续的节点配置变更,缩短了连续的节点配置变更的生效时延,提高节点配置变更的效率。
137.参照图16,图16为本技术实施例提供的区块链数据处理装置的另一种结构示意图,该第二区块链数据处理装置1600包括:交易请求接收模块1601,用于接收用于对区块链网络进行节点配置变更的交易请求;其中,交易请求中携带有节点配置信息;区块生成模块1602,用于获取目标配置变更区块的目标区块高度和目标配置变更区块对应的目标验证节点列表,根据节点配置信息和目标区块高度生成待验证配置变更区块;其中,目标配置变更区块为待验证配置变更区块对应的前一个生效的配置变更区块,目标验证节点列表包括目标配置变更区块生效后区块链网络中的验证节点;第二共识模块1603,用于将待验证配置变更区块发送至目标验证节点列表中的验
证节点,使得目标验证节点列表中的验证节点根据目标区块高度和预设的第一映射信息确定目标验证节点列表,并根据目标验证节点列表校验共识处理的权限,当校验结果为校验通过时,使得目标验证节点列表中的验证节点对待验证配置变更区块进行共识处理。
138.进一步,上述区块生成模块1602具体用于:从内存中获取预设的第二映射信息;其中,第二映射信息包括多个映射条目,各个映射条目包括候选区块高度和候选区块高度对应的候选验证节点列表;根据候选区块高度的区块高度大小或者映射条目的生成时间,从多个候选区块高度中确定目标区块高度,获取目标区块高度;将目标区块高度对应的候选验证节点列表确定为目标配置变更区块对应的目标验证节点列表,获取目标验证节点列表。
139.进一步,上述区块生成模块1602还用于:接收程序重启指令,当程序重启指令执行完毕,根据区块高度大小或者区块生效时间从预设的数据库中获取历史配置变更区块;确定历史配置变更区块的历史区块高度以及历史配置变更区块对应的历史验证节点列表,历史验证节点列表包括历史配置变更区块生效后区块链网络中的验证节点;将历史区块高度作为目标区块高度,将历史验证节点列表作为目标验证节点列表,生成目标区块高度和目标验证节点列表对应的映射条目并预加载至内存中。
140.进一步,上述区块生成模块1602具体用于:将节点配置信息写入待验证配置变更区块的区块体;获取待验证配置变更区块对应的更新区块高度,将更新区块高度作为待验证配置变更区块的目标区块信息的区块高度字段,将目标区块高度作为目标区块信息附加字段,将目标区块信息写入区块头;根据区块体和区块头生成待验证配置变更区块。
141.第二区块链数据处理装置1600与上述应用于主节点的区块链数据处理方法基于相同的发明构思,因此第二区块链数据处理装置1600通过获取目标配置变更区块的目标区块高度和目标配置变更区块对应的目标验证节点列表,根据节点配置信息和目标区块高度生成待验证配置变更区块,使得目标验证节点在接收到待验证配置变更区块后,可以从待验证配置变更区块中提取出目标配置变更区块的目标区块高度,进而根据预设的第一映射信息确定目标区块高度对应的目标验证节点列表,由于目标配置变更区块为待验证配置变更区块对应的前一个已生效的配置变更区块,因此该目标配置变更区块是被区块链网络中的验证节点达成共识的区块,而匹配得到的目标验证节点列表包括目标配置变更区块生效后区块链网络中的验证节点,因此该目标验证节点列表是有效的,且在不同的验证节点中是一致的,后续根据目标验证节点列表对待验证配置变更区块进行共识处理时,可以提高共识处理的可靠性,提高区块链网络运行的稳定性。并且,通过上述方式可以支持对连续的待验证配置变更区块进行共识处理,从而能够处理连续的节点配置变更,缩短了连续的节点配置变更的生效时延,提高节点配置变更的效率。
142.本技术实施例提供的用于执行上述区块链数据处理方法的电子设备可以是终端,参照图17,图17为本技术实施例提供的终端的部分结构框图,该终端包括:射频(radio frequency,简称rf)电路1710、存储器1720、输入单元1730、显示单元1740、传感器1750、音
频电路1760、无线保真(wireless fidelity,简称wifi)模块1770、处理器1780、以及电源1790等部件。本领域技术人员可以理解,图17中示出的终端结构并不构成对手机的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
143.rf电路1710可用于收发信息或通话过程中,信号的接收和发送,特别地,将基站的下行信息接收后,给处理器1780处理;另外,将设计上行的数据发送给基站。
144.存储器1720可用于存储软件程序以及模块,处理器1780通过运行存储在存储器1720的软件程序以及模块,从而执行手机的各种功能应用以及数据处理。
145.输入单元1730可用于接收输入的数字或字符信息,以及产生与手机的设置以及功能控制有关的键信号输入。具体地,输入单元1730可包括触控面板1731以及其他输入装置1732。
146.显示单元1740可用于显示输入的信息或提供的信息以及手机的各种菜单。显示单元1740可包括显示面板1741。
147.音频电路1760、扬声器1761,传声器1762可提供音频接口。
148.在本实施例中,该终端所包括的处理器1780可以执行前面实施例的区块链数据处理方法。
149.本技术实施例提供的用于执行上述区块链数据处理方法的电子设备也可以是服务器,参照图18,图18为本技术实施例提供的服务器的部分结构框图,服务器1800可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上中央处理器(central processing units,简称cpu)1822(例如,一个或一个以上处理器)和存储器1832,一个或一个以上存储应用程序1842或数据1844的存储介质1830(例如一个或一个以上海量存储装置)。其中,存储器1832和存储介质1830可以是短暂存储或持久存储。存储在存储介质1830的程序可以包括一个或一个以上模块(图示没标出),每个模块可以包括对服务器1800中的一系列指令操作。更进一步地,中央处理器1822可以设置为与存储介质1830通信,在服务器1800上执行存储介质1830中的一系列指令操作。
150.服务器1800还可以包括一个或一个以上电源1826,一个或一个以上有线或无线网络接口1850,一个或一个以上输入输出接口1858,和/或,一个或一个以上操作系统1841,例如windows servertm,mac os xtm,unixtm ,linuxtm,freebsdtm等等。
151.服务器1800中的处理器可以用于执行区块链数据处理方法。
152.本技术实施例还提供一种计算机可读存储介质,计算机可读存储介质用于存储程序代码,程序代码用于执行前述各个实施例的区块链数据处理方法。
153.本技术实施例还提供了一种计算机程序产品,该计算机程序产品包括计算机程序,该计算机程序存储在计算机可读存介质中。计算机设备的处理器从计算机可读存储介质读取该计算机程序,处理器执行该计算机程序,使得该计算机设备执行实现上述的区块链数据处理方法。
154.本技术的说明书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本技术的实施例例如能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或装置不必限
于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或装置固有的其它步骤或单元。
155.应当理解,在本技术中,“至少一个(项)”是指一个或者多个,“多个”是指两个或两个以上。“和/或”,用于描述关联对象的关联关系,表示可以存在三种关系,例如,“a和/或b”可以表示:只存在a,只存在b以及同时存在a和b三种情况,其中a,b可以是单数或者复数。字符“/”一般表示前后关联对象是一种“或”的关系。“以下至少一项(个)”或其类似表达,是指这些项中的任意组合,包括单项(个)或复数项(个)的任意组合。例如,a,b或c中的至少一项(个),可以表示:a,b,c,“a和b”,“a和c”,“b和c”,或“a和b和c”,其中a,b,c可以是单个,也可以是多个。
156.应了解,在本技术实施例的描述中,多个(或多项)的含义是两个以上,大于、小于、超过等理解为不包括本数,以上、以下、以内等理解为包括本数。
157.在本技术所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
158.作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
159.另外,在本技术各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
160.集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本技术的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机装置(可以是个人计算机,服务器,或者网络装置等)执行本技术各个实施例方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(read-only memory,简称rom)、随机存取存储器(random access memory,简称ram)、磁碟或者光盘等各种可以存储程序代码的介质。
161.还应了解,本技术实施例提供的各种实施方式可以任意进行组合,以实现不同的技术效果。
162.以上是对本技术的较佳实施进行了具体说明,但本技术并不局限于上述实施方式,熟悉本领域的技术人员在不违背本技术精神的共享条件下还可作出种种等同的变形或替换,这些等同的变形或替换均包括在本技术权利要求所限定的范围内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1