CN111444211B - 区块链共识节点校验方法、装置、设备以及存储介质 - Google Patents
区块链共识节点校验方法、装置、设备以及存储介质 Download PDFInfo
- Publication number
- CN111444211B CN111444211B CN202010224584.6A CN202010224584A CN111444211B CN 111444211 B CN111444211 B CN 111444211B CN 202010224584 A CN202010224584 A CN 202010224584A CN 111444211 B CN111444211 B CN 111444211B
- Authority
- CN
- China
- Prior art keywords
- consensus
- information
- node
- consensus 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/2365—Ensuring data consistency and integrity
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/64—Protecting data integrity, e.g. using checksums, certificates or signatures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q40/00—Finance; Insurance; Tax strategies; Processing of corporate or income taxes
- G06Q40/04—Trading; Exchange, e.g. stocks, commodities, derivatives or currency exchange
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Databases & Information Systems (AREA)
- General Engineering & Computer Science (AREA)
- Business, Economics & Management (AREA)
- Data Mining & Analysis (AREA)
- Finance (AREA)
- Accounting & Taxation (AREA)
- Software Systems (AREA)
- Economics (AREA)
- Computing Systems (AREA)
- General Health & Medical Sciences (AREA)
- Bioethics (AREA)
- Health & Medical Sciences (AREA)
- Development Economics (AREA)
- Computer Hardware Design (AREA)
- Marketing (AREA)
- Strategic Management (AREA)
- Technology Law (AREA)
- General Business, Economics & Management (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Debugging And Monitoring (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
本申请实施例提供了一种区块链共识节点校验方法、装置、设备以及存储介质,该方法包括:获取至少一个共识节点分别发送的消息数据,根据消息数据确定至少一个共识节点分别对应的共识校验信息;将各共识节点分别对应的共识校验信息均确定为待校验信息,得到至少两个待校验信息,从至少两个待校验信息中确定目标校验信息;若目标校验信息的数量达到数量阈值,且当前共识节点的待校验信息与目标校验信息相同,则确定当前共识节点属于正常共识节点;若目标校验信息的数量达到数量阈值,且当前共识节点的待校验信息与目标校验信息不同,则确定当前共识节点属于异常共识节点。采用本申请,可以有效保证共识的成功率,以提高区块链的共识效率。
Description
技术领域
本申请涉及区块链技术领域,尤其涉及区块链共识节点校验方法、装置、设备以及存储介质。
背景技术
区块链是一种去中心化的分布式账本系统,具有数据不可篡改、去中心化、开放性的特点。共识机制作为区块链技术中的核心,可以保证最新区块被准确添加至区块链,以及节点存储的区块链信息一致不分叉甚至可以抵御恶意攻击,共识节点在共识机制中具有重要作用。
现有技术中,区块链网络中的共识节点通过对生成的新区块进行验证,在完成对新区块的验证后,每个共识节点均需要将验证结果广播给区块链网络中的其他共识节点,每个共识节点在接收到其余共识节点的验证结果后,方可确定新区块的有效性。然而,区块链网络中的共识节点可能会存在网络故障,即区块链网络中可能会存在处于无效状态的共识节点,这些处于无效状态的共识节点是无法对新区块进行验证的,因此,当区块链网络中存在过多处于无效状态的共识节点时,就难以保证共识的成功率,会造成区块链的共识效率低下。
发明内容
本申请实施例提供一种区块链共识节点校验方法、装置、设备以及存储介质,可以有效保证共识的成功率,以提高区块链的共识效率。
本申请实施例一方面提供了一种区块链共识节点校验方法,包括:
获取区块链网络中至少一个共识节点分别发送的消息数据,根据消息数据确定至少一个共识节点分别对应的共识校验信息;至少一个共识节点为区块链网络中除当前共识节点之外的其余共识节点;
将至少一个共识节点和当前共识节点分别对应的共识校验信息均确定为待校验信息,得到至少两个待校验信息,根据至少两个待校验信息中属于相同的待校验信息的数量,从至少两个待校验信息中确定目标校验信息;
若目标校验信息的数量大于或等于数量阈值,且当前共识节点的待校验信息与目标校验信息相同,则确定当前共识节点属于正常共识节点;
若目标校验信息的数量大于或等于数量阈值,且当前共识节点的待校验信息与目标校验信息不相同,则确定当前共识节点属于异常共识节点。
本申请实施例一方面提供了一种区块链共识节点校验装置,其特征在于,包括:
获取模块,用于获取区块链网络中至少一个共识节点分别发送的消息数据,根据消息数据确定至少一个共识节点分别对应的共识校验信息;至少一个共识节点为区块链网络中除当前共识节点之外的其余共识节点;
确定模块,用于将至少一个共识节点和当前共识节点分别对应的共识校验信息均确定为待校验信息,得到至少两个待校验信息,根据至少两个待校验信息中属于相同的待校验信息的数量,从至少两个待校验信息中确定目标校验信息;
校验模块,用于若目标校验信息的数量大于或等于数量阈值,且当前共识节点的待校验信息与目标校验信息相同,则确定当前共识节点属于正常共识节点;
上述校验模块,还用于若目标校验信息的数量大于或等于数量阈值,且当前共识节点的待校验信息与目标校验信息不相同,则确定当前共识节点属于异常共识节点。
其中,消息数据包括应答数据包;
获取模块包括:
请求发送单元,用于向区块链网络中的至少一个共识节点发送请求数据包,以使至少一个共识节点获取与请求数据包相关联的应答数据包;请求数据包用于确认当前共识节点与至少一个共识节点之间的数据共识状态;
应答接收单元,用于接收至少一个共识节点分别返回的应答数据包,根据应答数据包中的共识区块高度和共识阶段,确定至少一个共识节点分别对应的共识校验信息。
其中,请求发送单元具体用于:
通过心跳机制,按照时间频率信息向区块链网络中的至少一个共识节点发送请求数据包,以使至少一个共识节点获取与请求数据包相关联的应答数据包。
其中,消息数据包括共识消息;
获取模块包括:
共识消息获取单元,用于获取区块链网络中至少一个共识节点分别广播的共识消息,从共识消息中分别获取与至少一个共识节点相关联的共识区块高度和共识阶段;
校验信息确定单元,用于根据共识区块高度与共识阶段,确定至少一个共识节点分别对应的共识校验信息。
其中,确定模块包括:
分类单元,用于对至少两个待校验信息进行分类,得到至少一个信息类别;相同的信息类别具有相同的待校验信息;
统计单元,用于分别统计每个信息类别所包含的待校验信息的数量,将最大的数量所对应的信息类别中的待校验信息确定为目标校验信息。
其中,该装置还包括:
条件确定模块,用于若目标校验信息对应的数量小于数量阈值,则确定区块链网络中的共识节点不满足共识处理条件;
暂停模块,用于暂停执行区块链网络中的共识处理过程,直至区块链网络中的共识节点满足共识处理条件。
其中,该装置还包括:
区块高度确定模块,用于将目标校验信息中的共识区块高度确定为第一区块高度,将当前共识节点对应的待校验信息中的共识区块高度确定为第二区块高度;
第一同步模块,用于若第二区块高度小于第一区块高度,则获取第二区块高度至第一区块高度所对应的共识区块,根据共识区块对当前共识节点中的区块数据进行同步。
其中,该装置还包括:
共识节点确定模块,用于若第一区块高度等于第二区块高度,则将当前共识节点对应的待校验信息中的共识阶段确定为第一共识阶段,将目标校验信息中的共识阶段确定为第二共识阶段;
第二同步模块,用于获取第一共识阶段至第二共识阶段的触发消息数据,根据触发消息数据对当前共识节点中的消息进行同步。
其中,该装置还包括:
候选节点确定模块,用于将目标校验信息中的共识区块高度确定为第一区块高度,从至少一个共识节点中确定候选共识节点;候选共识节点对应的共识区块高度大于第一区块高度;
区块获取模块,用于从候选共识节点中获取第一区块高度对应的区块,作为待验证区块;
工作状态确定模块,用于根据目标校验信息对应的共识节点对待验证区块的验证结果,确定候选共识节点的工作状态信息。
其中,工作状态确定模块包括:
第一比较单元,用于若目标校验信息对应的共识节点的验证结果中通过验证的数值小于目标数值,则确定候选共识节点属于无效工作状态;
第二比较单元,用于若目标校验信息对应的共识节点的验证结果中通过验证的数值大于或等于目标数值,则确定候选共识节点属于有效工作状态。
本申请实施例一方面提供了一种计算机设备,包括存储器和处理器,存储器存储有计算机程序,计算机程序被处理器执行时,使得处理器执行本申请实施例中一方面中方法的步骤。
本申请实施例一方面提供了一种计算机可读存储介质,计算机可读存储介质存储有计算机程序,计算机程序包括程序指令,程序指令当被处理器执行时,执行如本申请实施例中一方面中方法的步骤。
本申请实施例可以通过获取区块链网络中至少一个共识节点分别发送的消息数据,根据消息数据确定至少一个共识节点分别对应的共识校验信息,根据所有共识校验信息中属于相同共识校验信息的数量确定目标校验信息,若目标校验信息的数量大于或等于数量阈值,且当前共识节点的共识校验信息与目标校验信息相同,则确定当前共识节点属于正常共识节点;若目标校验信息的数量大于或等于数量阈值,且当前共识节点的共识校验信息与目标校验信息不相同,则确定当前共识节点属于异常共识节点。可见,通过区块链网络中其余共识节点发送的消息数据确定其余共识节点分别对应的共识校验信息,进而根据各共识节点分别对应的共识校验信息对当前共识节点进行校验,可以确定区块链网络中处于有效状态的共识节点,当区块链网络中处于有效状态的共识数量达到数量阈值时,执行共识过程,可以有效保证共识的成功率,并提高区块链的共识效率。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的一种网络架构图;
图2是本申请实施例提供的一种区块链共识节点校验场景示意图;
图3是本申请实施例提供的一种区块链共识节点校验方法的流程示意图;
图4是本申请实施例提供的一种获取共识校验信息的示意图;
图5是本申请实施例提供的一种同步共识节点中的区块数据的示意图;
图6是本申请实施例提供的一种同步共识节点中的消息的示意图;
图7是本申请实施例提供的一种区块链共识节点校验装置的结构示意图;
图8是本申请实施例提供的一种计算机设备的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
区块链(Blockchain)是一种分布式数据存储、点对点传输(P2P传输)、共识机制、加密算法等计算机技术的新型应用模式。区块链本质上是一个去中心化的数据库,是一串使用密码学方法相关联产生的数据块,每一个数据块中包含了一批次网络交易的信息,用于验证其信息的有效性(防伪)和生成下一个区块。区块链可以包括区块链底层平台、平台产品服务层以及应用服务层。
区块链底层平台可以包括用户管理、基础服务、智能合约以及运营监控等处理模块。其中,用户管理模块负责所有区块链参与者的身份信息管理,包括维护公私钥生成(账户管理)、密钥管理以及用户真实身份和区块链地址对应关系维护(权限管理)等,并且在授权的情况下,监管和审计某些真实身份的交易情况,提供风险控制的规则配置(风控审计);基础服务模块部署在所有区块链节点设备上,用来验证业务请求的有效性,并对有效请求完成共识后记录到存储上,对于一个新的业务请求,基础服务先对接口适配解析和鉴权处理(接口适配),然后通过共识算法将业务信息加密(共识管理),在加密之后完整一致的传输至共享账本上(网络通信),并进行记录存储;智能合约模块负责合约的注册发行以及合约触发和合约执行,开发人员可以通过某种编程语言定义合约逻辑,发布到区块链上(合约注册),根据合约条款的逻辑,调用密钥或者其它的事件触发执行,完成合约逻辑,同时还提供对合约升级注销的功能;运营监控模块主要负责产品发布过程中的部署、配置的修改、合约设置、云适配以及产品运行中的实时状态的可视化输出,例如:告警、监控网络情况、监控节点设备健康状态等。
请参见图1,是本申请实施例提供的一种网络架构图。如图1所示,该网络架构可以包括多个区块链节点(如图1所示,具体可以包括节点服务器10a、节点服务器10b、节点服务器10c以及节点服务器10d)和终端设备10e。其中,节点服务器10a、节点服务器10b、节点服务器10c以及节点服务器10d均表示为区块链网络中的共识节点;终端设备10e可以是指用户终端,该终端设备10e可以将需要上链的数据(如新产生的交易数据)上传至区块链网络,并向区块链网络请求将上传的数据打包成区块写入区块链中。当终端设备10e向区块链网络上传数据后,可以从区块链网络中选出将终端设备10e上传的数据打包成新区块的共识节点。由于区块链网络中生成的区块均需要进行共识,只有共识通过后的区块才可以添加至区块链,即区块在得到区块链网络中大部分共识节点的一致性投票后(共识节点的具体投票数量与采用的共识算法相关,如区块链网络中超过51%的共识节点投票通过,则表明该新区块共识通过),才能确认该新区块是合法区块,可以添加至区块链。因此,节点服务器10a在生成新区块后,需要将新区块广播给区块链网络中的其余共识节点,如节点服务器10a在生成新区块后,可以将新区块广播给节点服务器10b、节点服务器10c以及节点服务器10d,以使各共识节点可以对新区块进行验证。在区块链网络的共识过程中可以添加心跳机制,通过心跳机制可以获取各共识节点在共识过程中的共识校验信息,进而可以根据各共识节点分别对应的共识校验信息确定共识节点的有效状态。
其中,终端设备10e可以包括手机、平板电脑、笔记本电脑、掌上电脑、移动互联网设备(mobile internet device,MID)、可穿戴设备(例如智能手表、智能手环等)等。
请参见图2,是本申请实施例提供的一种区块链共识节点校验场景示意图。以共识节点1为例,对区块链共识节点校验方案的实现过程进行具体说明,此时的共识节点1可以称为当前共识节点。如图2所示,区块链网络中的共识节点1可以接收客户端上传至区块链网络的交易数据,并将接收到的交易数据打包成区块;在将客户端上传至区块链网络的交易数据打包成区块后,共识节点1可以在区块链网络中对所生成的区块进行广播,以使区块链网络中的其余共识节点对共识节点1所生成的区块进行共识验证。其中,交易数据可以是指客户端根据用户的交易操作所生成的数据,上传至区块链网络的每笔交易数据均可以包括交易发起方、交易接收方以及交易内容。例如,用户1想从用户2处购买10个游戏币,则用户1可以与用户2达成交易意向;用户2可以通过客户端创建交易数据,该交易数据中的发起方可以为:创建该交易数据的客户端所对应的用户2,如用户2的账号,接收方可以为:购买游戏币的用户1,如用户1的账号,交易内容可以为:将10个游戏币从发起方的账户转移至接收方的账户;该交易数据用于指示区块链网络将10个游戏币从用户2的账户转移至用户1的账户。共识节点1在接收到客户端上传的交易数据后,可以对交易数据进行验证,验证的目的在于确定该交易数据在上传过程中是否被恶意篡改,如共识节点1接收到的交易数据是否为客户端上传至区块链网络的,或者验证接收到的交易数据中的交易内容是否为客户端实际上传的交易数据中的交易内容,等等。通过验证的交易数据方可打包成区块,区块链网络中所生成的每个区块均需要进行共识,通过共识后的区块可以添加至区块链中。
在区块链网络中可以添加心跳机制,在区块的共识过程中,区块链网络中的每个共识节点均可以通过心跳机制向其余共识节点发送心跳数据包,如共识节点1可以通过心跳机制向其余共识节点(如共识节点2、共识节点3、共识节点4等)发送心跳数据包,当共识节点1与其余共识节点之间的网络连接正常时,区块链网络中的其余共识节点在接收到共识节点1发送的心跳数据包后,均可以向共识节点1返回应答数据包;当区块链网络中存在共识节点(如共识节点2)与共识节点1之间未建立网络连接,或者存在共识节点(如共识节点2)与共识节点1之间的网络连接断开时,共识节点2无法直接接收到共识节点1发送的心跳数据包,在此情形下,接收到心跳数据包的共识节点(如共识节点3)可以对所接收的心跳数据包进行广播,以使区块链网络中除共识节点1之外的其余共识节点均可以获得共识节点1发送的心跳数据包,并返回与该心跳数据包相匹配的应答数据包。可以理解的是,心跳机制可以预先设置发送心跳数据包的时间频率信息、心跳数据包的数据类型以及应答数据包的数据类型。换言之,共识节点1每隔一段时间就可以自动向其余共识节点发送心跳数据包,心跳数据包可以用于确认共识节点的共识状态。
共识节点1在接收到其余共识节点所返回的应答数据包后,可以根据应答数据包中所包含的数据确定其余共识节点分别对应的共识校验信息,共识节点1还可以获取自身的共识校验信息,如共识节点1对应的共识校验信息为:共识校验信息1,共识节点2对应的共识校验信息为:共识校验信息2,共识节点3对应的共识校验信息为:共识校验信息3,共识节点4对应的共识校验信息为:共识校验信息4等。其中,共识校验信息包括共识节点中的共识区块高度和共识阶段,共识区块高度为共识节点中待共识区块的区块高度,共识阶段是指在共识过程中共识节点所属的共识流程;每个待共识区块的共识过程均可以包括至少一个阶段,如待共识区块获取阶段、交易列表获取模块以及交易数据执行阶段等。
共识节点1可以对各共识节点分别对应的共识校验信息进行分类统计,将相同的共识校验信息作为一个类别,并分别统计每个类别中共识校验信息对应的数量,将具有最大的数量的类别所对应的共识校验信息作为目标校验信息,如目标校验信息对应的数量为a。当数量a大于或等于数量阈值(区块链网络中的共识节点的数量为n时,数量阈值可以为2/(3*n)),且共识节点1对应的共识校验信息与目标校验信息相同时,可以确定共识节点1属于正常共识节点,即共识节点1的共识过程与区块链网络中的多数共识节点的共识过程保持一致;当数量a大于或等于数量阈值,且共识节点1对应的共识校验信息与目标校验信息不相同时,可以确定共识节点1属于异常共识节点,即共识节点1的共识过程与区块链网络中的多数共识节点的共识过程不一致,此时的共识节点1可以通过心跳机制与其余共识节点进行数据同步。
请参见图3,是本申请实施例提供的一种区块链共识节点校验方法的流程示意图,可以理解的是,该方法可以由计算机设备执行,计算机设备可以为区块链网络中的共识节点,共识节点可以是区块链网络中的节点服务器,或者是区块链网络中的其他节点设备。如图3所示,该区块链共识节点校验方法可以包括以下步骤:
步骤S101,获取区块链网络中至少一个共识节点分别发送的消息数据,根据消息数据确定至少一个共识节点分别对应的共识校验信息;至少一个共识节点为区块链网络中除当前共识节点之外的其余共识节点。
具体的,区块链网络的共识过程中,任一共识节点均可以获取至少一个共识节点分别发送的消息数据,根据消息数据可以确定区块链网络中除当前共识节点之外的其余共识节点(即至少一个共识节点)分别对应的共识校验信息,当然,当前共识节点对应的共识校验信息可以直接由当前共识节点在本地获取得到;当前共识节点可以根据区块链网络中各共识节点分别对应的共识校验信息,校验自身节点的有效状态。在区块链网络中,共识过程需要多个共识节点的参与,因此在共识过程中,可以对共识节点的有效状态进行校验,当检测到区块链网络中超过数量阈值的共识节点处于有效状态时,共识节点可以执行共识过程;当检测到区块链网络中少于数量阈值的共识节点处于有效状态时,表明区块链网络可能存在网络故障,可以暂停当前共识过程,等待区块链网络的网络恢复。换言之,当区块链网络中处于有效状态的共识节点的数量少于数量阈值时,即使处于有效状态的共识节点对待共识区块的共识验证结果均为通过,该待共识区块仍然无法满足区块链网络中的共识条件(该共识条件可以是指通过共识验证的数量超过上述数量阈值),因此可以暂停执行共识过程,直至区块链网络恢复网络正常,可以节省网络资源。其中,上述数量阈值取决于区块链网络中所采用的共识算法,所采用的共识算法不同,数量阈值可能存在差异,如一些共识算法中的数量阈值可以是指区块链网络中共识节点数量的2/3,或者一些共识算法中的数量阈值可以是指区块链网络中共识节点数量的51%,这里不做具体限定。
区块链网络中的共识节点所获取到的消息数据可以是指应答数据包,也可以是指共识消息。当前共识节点可以向区块链网络中的至少一个共识节点发送请求数据包,以使至少一个共识节点获取与请求数据包相关联的应答数据包,该请求数据包用于确认当前共识节点与至少一个共识节点之间的数据共识状态;接收至少一个共识节点分别返回应答数据包,根据应答数据包中的共识区块高度和共识阶段,确定至少一个共识节点分别对应的共识校验信息。需要说明的是,待共识区块的共识过程可以包括多个共识阶段,共识过程中所包含的共识阶段取决于区块链网络中所采用的共识算法,如待共识区块对应的共识过程可以包括:待共识区块获取阶段、交易定序获取阶段、交易执行阶段等。其中,区块链网络中的共识节点可以基于共识算法对待共识区块进行验证,共识算法包括但不限于:工作量证明(Proof of Work,PoW)、权益证明(Proof of Stake,PoS)、工作量证明与权益证明混合(PoW+PoS)、股份授权证明(Delegated Proof of Stake,DPoS)、实用拜占庭容错算法(Practical Byzantine Fault Tolerance,PBFT)、瑞波共识协议(Ripple ConsensusProtocol,RCP)。
在区块链网络中,各共识节点之间需要保持长时间的网络连接,以实现共识节点之间的实时数据传输,如共识节点在生成待共识区块后,对所生成的待共识区块进行广播,或者共识节点在执行完交易数据后,对交易数据对应的执行结果进行广播等。因此,在区块链网络中可以添加心跳机制,在心跳机制中可以包括一个自定义的结构体(即上述请求数据包)、时间频率信息以及该结构体对应的应答数据包类型,时间频率信息可以用于确定发送请求数据包的间隔时间,结构体对应的应答数据包类型可以用于确定应答数据包中所包含的信息。在区块链网络中添加了心跳机制后,区块链网络中的共识节点可以通过心跳机制,按照时间频率信息向区块链网络中的至少一个共识节点发送请求数据包,以使至少一个共识节点获取与请求数据包相关联的应答数据包。换言之,区块链网络中的共识节点可以每隔一段时间向区块链网络中的其余共识节点发送一个自定义结构体(即请求数据包),区块链网络中的其余共识节点在接收到请求数据包后,可以向发送请求数据包的共识节点返回应答数据包,该应答数据包中可以包括共识节点中待共识区块的共识区块高度和共识阶段;当前共识节点在接收到其余共识节点分别返回的应答数据包后,可以根据应答数据包中所包含的共识区块高度和共识阶段,确定至少一个共识节点分别对应的共识校验信息。需要说明的是,区块链网络中的任一共识节点均可以通过心跳机制直接向其余共识节点发送请求数据包,即共识节点可以直接接收其余共识节点分别返回的应答数据包;或者,区块链网络中的共识节点还可以通过心跳机制向中转节点发送请求数据包,由中转节点将请求数据包进行广播,以使区块链网络中的其余共识节点均可以接收到该请求数据包,随后,其余共识节点可以将请求数据包对应的应答数据包返回至中转节点,由中转节点将其余共识节点分别对应的应答数据包返回至当前共识节点,该中转节点可以为区块链网络中的任一区块链节点。
举例来说,区块链网络中共包括5个共识节点,分别为:共识节点1、共识节点2、共识节点3、共识节点4以及共识节点5,共识节点1(此时的共识节点1可以称为当前共识节点)可以通过心跳机制分别向共识节点2、共识节点3、共识节点4以及共识节点5发送请求数据包,共识节点2、共识节点3、共识节点4以及共识节点5在接收到请求数据包后,均可以向共识节点1返回请求数据包对应的应答数据包,即共识节点2可以向共识节点1返回共识节点2中待共识区块的区块高度以及待共识区块所处的共识阶段,共识节点3可以向共识节点1返回共识节点3中待共识区块的区块高度以及待共识区块所处的共识阶段,共识节点4可以向共识节点1返回共识节点4中待共识区块的区块高度以及待共识区块所处的共识阶段,共识节点5可以向共识节点1返回共识节点5中待共识区块的区块高度以及待共识区块所处的共识阶段。根据各共识节点所返回的应答数据包,确定共识节点2、共识节点3、共识节点4以及共识节点5分别对应的共识校验信息,共识校验信息可以用于表征共识节点中的共识区块高度和共识阶段。需要说明的是,在区块链网络中添加心跳机制后,区块链网络中的当前共识节点可以通过心跳机制主动向其余共识节点发送请求数据包,以获取其余共识节点分别对应的共识校验信息。
请一并参见图4,是本申请实施例提供的一种获取共识校验信息的示意图。如图4所示,区块链网络中包括4个共识节点,分别为共识节点30a、共识节点30b、共识节点30c以及共识节点30d。共识节点30a可以通过心跳机制分别向共识节点30b、共识节点30c以及共识节点30d发送心跳请求包,在共识节点30a的本地可以启动一个定时器,该定时器可以用于每隔一段时间向共识节点30b、共识节点30c以及共识节点30d发送心跳请求包,共识节点30b、共识节点30c以及共识节点30d在接收到共识节点30a发送的心跳请求包后,可以向共识节点30a返回心跳请求包对应的应答数据包。当共识节点30b本地的待共识区块的区块高度为100,且待共识区块处于共识过程的第一阶段时,共识节点30b可以将区块高度100和第一阶段添加至应答数据包并返回至共识节点30a;共识节点30a可以根据共识节点30b返回的应答数据包,确定共识节点30b对应的共识校验信息1,该共识校验信息1中可以包括:共识区块高度为100(即共识节点30b中待共识区块对应的区块高度),共识阶段为第一阶段。同理,共识节点30a可以根据共识节点30c返回的应答数据包,确定共识节点30c对应的共识校验信息2,该共识校验信息2中可以包括:共识区块高度为100(即共识节点30c中待共识区块对应的区块高度),共识阶段为第二阶段;共识节点30a可以根据共识节点30d返回的应答数据包,确定共识节点30d对应的共识校验信息3,该共识校验信息3中可以包括:共识区块高度为101(即共识节点30d中待共识区块对应的区块高度),共识阶段为第一阶段。
可选的,当消息数据为共识消息时,区块链网络中的当前共识节点可以获取区块链网络中至少一个共识节点分别广播的共识消息,从共识消息中分别获取与至少一个共识节点相关联的共识区块高度和共识阶段;根据共识区块高度与共识阶段,确定至少一个共识节点分别对应的共识校验信息。在区块链网络中,每个共识节点可以对待共识区块进行验证,并将共识验证结果作为共识消息广播给其余共识节点,共识消息中可以包括待共识区块对应的共识区块高度以及待共识区块所处的共识阶段;根据共识消息中所包含的共识区块高度和共识阶段,可以确定除当前共识节点之外的其余共识节点分别对应的共识校验信息。
应当理解,待共识区块是指共识节点根据客户端上传至区块链网络的交易数据所生成的区块,且所生成的区块处于共识阶段,即待共识区块为未正式上链的区块。交易数据可以由客户端根据用户的交易操作而生成的数据,在交易数据上传至区块链网络且通过验证后,共识节点可以将通过验签的交易数据打包成待共识区块。当然,待共识区块中可以包括至少两笔交易数据,且至少两笔交易数据在待共识区块中是具有排列顺序的,交易数据在待共识区块中的排列顺序即为交易数据的执行顺序。
当上传至区块链网络的交易数据携带数字签名时,区块链网络中的共识节点可以对交易数据进行验签,即根据客户端上传至区块链网络的公钥对交易数据所携带的数字签名进行解密,得到第一摘要信息,进而根据哈希算法对交易数据进行哈希运算,得到交易数据对应的第一摘要信息,当第一摘要信息与第二摘要信息相同时,可以确定交易数据通过验签。其中,第一摘要信息为客户端根据哈希运算计算得到的针对交易数据的摘要信息,第二摘要信息为共识节点根据哈希运算计算得到的针对实际所接收的交易数据的摘要信息,客户端与共识节点所使用的哈希算法是相同的;客户端在区块链网络中进行身份注册时,可以创建密钥对,该密钥对可以包括公钥和私钥,客户端可以将密钥对中的公钥上传至区块链网络,而私钥由客户端管理。密钥对中的私钥用于客户端对上传至区块链网络的交易数据进行数字签名,密钥对中的公钥用于区块链节点对上传至区块链网络中的交易数据进行验签。需要说明的是,区块链网络中的公钥是具有唯一性的,一个公钥对应一个客户端。
其中,哈希算法可以将数据或者消息压缩成摘要,不仅可以将数据的格式固定下来,还可以使数据量变小,哈希算法可以包括但不限于SHA-1、SHA-224、SHA-256、SHA-384以及SHA-512。以SHA-256算法为例,对于任意大小的数据,SHA-256算法均可以产生一个256比特的哈希值,对于不同的数据可以产生不同的哈希值。
通过验签的交易数据可以由共识节点打包进待共识区块,待共识区块生成后,由待共识区块对应的区块生成节点在区块链网络中对待共识区块进行广播,此时的待共识区块进入共识过程,即区块链网络中的共识节点在接收到待共识区块后,可以对待共识区块进行验证,每个共识节点都可以对待共识区块的共识验证结果进行广播。待共识区块的验证可以包括但不限于:验证待共识区块的区块头中的随机数是否符合目标难度值;检查待共识区块中的生成时间戳是否小于时间阈值(如当前系统时间2小时);检查待共识区块中的默克尔树根是否正确,检查待共识区块对应的区块容量是否小于区块容量的上限;验证待共识区块中所包含的每笔交易数据。当待共识区块的区块头中的随机数满足目标难度值,且生成时间戳大于时间阈值,且待共识区块中的默克尔树根正确,且待共识区块的区块容量小于区块链网络中区块容量的上限,且待共识区块中的每笔交易数据均通过验证,则可以确定待共识区块通过验证;当上述任一项不满足时,可以确定待共识区块未通过验证。
步骤S102,将至少一个共识节点和当前共识节点分别对应的共识校验信息均确定为待校验信息,得到至少两个待校验信息,根据至少两个待校验信息中属于相同的待校验信息的数量,从至少两个待校验信息中确定目标校验信息。
具体的,区块链网络中的当前共识节点可以直接从本地数据中获取自身的共识校验信息,将自身的共识校验信息和至少一个共识节点(即除当前共识节点之外的其余共识节点)分别对应的共识校验信息均确定为待校验信息,以得到至少两个待校验信息,当前共识节点可以统计至少两个待校验信息中属于相同的待校验信息的数量,根据相同待校验信息的数量,从至少两个待校验信息中确定目标校验信息。进一步地,当前共识节点可以对至少两个待校验信息进行分类,得到至少一个信息类别,其中,相同的信息类别具有相同的共识校验信息,进而可以分别统计每个信息类别中所包含的待校验信息的数量,将最大的数量所对应的信息类别确定为目标校验信息。
例如,区块链网络中包括5个共识节点,分别可以表示为共识节点1、共识节点2、共识节点3、共识节点4以及共识节点5;共识节点1对应的待校验信息包括:共识区块高度为n,共识阶段为第一阶段;共识节点2对应的待校验信息包括:共识区块高度为n,共识阶段为第一阶段;共识节点3对应的待校验信息包括:共识区块高度为n,共识阶段为第一阶段;共识节点4对应的待校验信息包括:共识区块高度为n,共识阶段为第一阶段;共识节点5对应的待校验信息包括:共识区块高度为n+1,共识阶段为第一阶段。以共识节点1为当前共识节点为例,共识节点1可以将上述5个共识节点分别对应的待校验信息划分为两个信息类别,第一个信息类别为包含共识区块高度n和第一阶段的待校验信息,第二个信息类别为包含共识区块n+1和第一阶段的待校验信息;第一个信息类别对应的共识节点分别为:共识节点1、共识节点2、共识节点3以及共识节点4,即第一个信息类别对应的数量为4个,第二个信息类别对应的共识节点为:共识节点5,即第二个信息类别对应的数量为1。因此,共识节点1可以将第一个信息类别中的待校验信息确定为目标校验信息。
步骤S103,若目标校验信息的数量大于或等于数量阈值,且当前共识节点的待校验信息与目标校验信息相同,则确定当前共识节点属于正常共识节点。
具体的,当前共识节点在确定了目标校验信息后,可以将目标校验信息的数量与区块链网络中的数量阈值进行比较,当目标校验信息对应的数量大于或等于数量阈值时,表明区块链网络中的当前共识过程是属于正常执行状态的,在共识过程为正常执行状态的情形下,若当前共识节点对应的待校验信息与目标共识校验信息相同,则可以确定当前共识节点与区块链网络中的其余共识节点保持消息一致,该当前共识节点属于正常共识节点。如前述举例,区块链网络中包括5个共识节点,目标校验信息为包含共识区块高度n和第一阶段的待校验信息,且目标校验信息对应的数量为4,其中,当前共识节点(即共识节点1)对应的待校验信息包括:共识区块高度为n,共识阶段为第一阶段;由于目标校验信息的数量大于数量阈值(该数量阈值可以为(5*2)/3),且当前共识节点对应的待校验信息与目标校验信息相同,因此可以确定当前共识节点属于正常共识节点。当然,基于上述各共识节点分别对应的待校验信息,当前共识节点还可以确定区块链网络中的共识节点2、共识节点3以及共识节点4均属于正常共识节点。
可选的,若当前共识节点属于正常共识节点,则当前共识节点可以将目标校验信息中的共识区块高度确定为第一区块高度,从至少一个共识节点中确定候选共识节点,该候选共识节点对应的共识区块高度大于第一区块高度;从候选共识节点中获取第一区块高度对应的区块,作为待验证区块;根据目标校验信息对应的共识节点对待验证区块的验证结果,确定候选共识节点的工作状态信息,即若目标校验信息对应的共识节点的验证结果中通过验证的数值小于目标数值,则确定候选共识节点属于无效工作状态;若目标校验信息对应的共识节点的验证结果中通过验证的数值大于或等于目标数值,则确定候选共识节点属于有效工作状态。
当前共识节点可以将目标校验信息中的共识区块高度确定为第一区块高度,若区块链网络中存在某共识节点对应的共识区块高度大于第一区块高度,则可以将该共识节点确定为候选共识节点,从候选共识节点中获取第一区块高度对应的区块作为待验证区块。将待验证区块在区块链网络中进行广播,以使区块链网络中目标校验信息对应的共识节点(即正常共识节点)对待验证区块进行验证。待验证区块的验证过程包括:区块链网络中的每个正常共识节点均可以从本地获取第一区块高度对应的待共识区块,若第一区块高度对应的待共识区块与待验证区块相同,则表明待验证区块通过验证;若第一区块高度对应的待共识区块与待验证区块不相同,则表明待验证区块未通过验证。正常共识节点在获得待验证区块的验证结果后,可以对验证结果进行广播。
当前共识节点在获取到每个正常共识节点对待验证区块的验证结果后,可以统计待验证区块对应的赞成投票数(即通过验证的正常共识数量),若赞成投票数超过正常共识数量的2/3,则可以确定候选共识节点属于有效工作状态,只是候选共识节点中的共识过程领先于区块链网络中的多数共识节点;若赞成投票数小于正常共识数量的2/3,则可以确定候选共识节点属于无效工作状态,即候选共识节点中第一区块高度对应的区块与其余共识节点中第一区块高度对应的待共识区块不一样,表明该候选共识节点可能被恶意攻击。如前述举例,由于共识节点5对应的共识校验信息中的共识区块高度大于目标校验信息中的共识区块高度,因此共识节点1可以将共识节点5确定为候选共识节点,并从共识节点5中获取区块高度为n的区块作为待验证区块,进而将待验证区块广播给共识节点2、共识节点3以及共识节点4;获取共识节点1、共识节点2、共识节点3以及共识节点4对待验证区块的验证结果,若共识节点1、共识节点2、共识节点3以及共识节点4中存在至少三个共识节点通过了待验证区块的验证,则可以确定共识节点5属于有效工作状态;若共识节点1、共识节点2、共识节点3以及共识节点4中少于三个共识节点通过待验证区块的验证,则可以确定共识节点5属于无效工作状态。
可选的,若目标校验信息对应的数量小于数量阈值,则确定区块链网络中的共识节点不满足共识处理条件,暂停执行区块链网络中的共识处理过程,直至区块链网络中的共识节点满足共识处理条件。换言之,当目标校验信息对应的数量小于数量阈值时,表明区块链网络可能存在网络故障,可以暂停执行区块链网络中的共识处理过程,等待区块链网络的恢复,在网络恢复后,区块链网络中的共识节点可以进行交互,继续执行共识处理过程。
步骤S104,若目标校验信息的数量大于或等于数量阈值,且当前共识节点的共识校验信息与目标校验信息不相同,则确定当前共识节点属于异常共识节点。
具体的,当目标校验信息的数量大于或等于数量阈值时,可以表明区块链网络中的当前共识过程是属于正常执行状态的,在当前共识过程为正常执行状态的情形下,若当前共识节点对应的待校验信息与目标校验信息不相同,则可以确定当前共识节点与区块链网络中的其余共识节点消息不一致,该当前共识节点属于异常共识节点。
可选的,若当前共识节点属于异常共识节点,则当前共识节点可以将目标校验信息中的共识区块高度确定为第一区块高度,将当前共识节点对应的共识校验信息中的共识区块高度确定为第二区块高度;若第二区块高度小于第一区块高度,则获取第二区块高度至第一区块高度所对应的共识区块,根据共识区块对当前共识节点中的区块数据进行同步。换言之,当前共识节点中待共识区块的区块高度(即第二区块高度)小于目标校验信息中的共识区块高度时,可以表明当前共识节点的共识处理状态落后于其余共识节点的共识处理状态,因此当前共识节点可以从其余共识节点处获取第二区块高度至第一区块高度的共识区块,根据所获取的共识区块更新当前共识节点中的区块数据。例如,目标校验信息中的共识区块高度为n,当前共识节点中待共识区块的区块高度为n-2,则当前共识节点可以从其余共识节点处获取区块高度为n-1的区块和区块高度为n的区块,根据区块高度为n-1的区块和区块高度为n的区块,对当前共识节点中的区块数据进行同步,以使当前共识节点与其余共识节点保持区块数据一致。
请一并参见图5,是本申请实施例提供的一种同步共识节点中的区块数据的示意图。如图5所示,区块链网络中包括5个共识节点,该5个共识节点分别为:共识节点1、共识节点2、共识节点3、共识节点4以及共识节点5。以共识节点1为当前共识节点为例,共识节点1的共识过程中待共识区块为区块n-1,即待共识区块的区块高度为n-1;其余共识节点(包括共识节点2、共识节点3、共识节点4以及共识节点5)的共识过程中待共识区块为区块n,即待共识区块的区块高度均为n,可以确定共识节点1的共识过程落后于其余共识节点的共识过程,即共识节点1属于异常共识节点。共识节点1可以向其余共识节点发送数据同步请求,其余共识节点在接收到共识节点1的数据同步请求时,可以向共识节点1返回区块n。共识节点1在接收到其余共识节点返回的区块n后,可以将区块n存储在本地中。
若第一区块高度等于第二区块高度,则可以将当前共识节点对应的共识校验信息中的共识阶段确定为第一共识阶段,将目标校验信息中的共识阶段确定为第二共识阶段;获取第一共识阶段至第二共识阶段的触发消息数据,根据触发消息数据对当前共识节点中的消息进行同步。换言之,在当前共识节点与其余共识节点在共识过程中的待共识区块相同时,可以获取当前共识节点中待共识区块所属的第一共识阶段,以及目标校验信息中的第二共识阶段,若第一共识阶段落后于第二共识阶段,则可以获取第一共识阶段至第二共识阶段的触发消息数据,即通过上述触发消息数据,可以触发当前共识节点的共识过程从第一共识阶段进入第二共识阶段,实现当前共识节点的消息同步。
请一并参见图6,是本申请实施例提供的一种同步共识节点中的消息的示意图。如图6所示,区块链网络中包括5个共识节点,该5个共识节点分别为:共识节点1、共识节点2、共识节点3、共识节点4以及共识节点5。以共识节点1为当前共识节点为例,共识节点1在获取到上述5个共识节点分别对应的共识验证信息后,所有共识节点的共识过程中的待共识区块均为区块n,其中,共识节点1中的区块n在共识过程中处于第二阶段,其余共识节点(包括共识节点2、共识节点3、共识节点4以及共识节点5)中的区块n在共识过程中处于第一阶段,可以确定共识节点1的共识过程落后于其余共识节点的共识过程,即共识节点1属于异常共识节点。共识节点1可以向其余共识节点发送数据同步请求,其余共识节点在接收到共识节点1的数据同步请求时,可以向共识节点1返回第一阶段至第二阶段的触发消息数据。共识节点1在接收到其余共识节点返回的触发消息数据后,可以将触发消息数据存储在本地中,并根据上述触发消息数据,触发区块n从第一阶段至第二阶段的执行过程。
本申请实施例可以通过获取区块链网络中至少一个共识节点分别发送的消息数据,根据消息数据确定至少一个共识节点分别对应的共识校验信息,根据所有共识校验信息中属于相同共识校验信息的数量确定目标校验信息,若目标校验信息的数量大于或等于数量阈值,且当前共识节点的共识校验信息与目标校验信息相同,则确定当前共识节点属于正常共识节点;若目标校验信息的数量大于或等于数量阈值,且当前共识节点的共识校验信息与目标校验信息不相同,则确定当前共识节点属于异常共识节点。可见,通过区块链网络中其余共识节点发送的消息数据确定其余共识节点分别对应的共识校验信息,进而根据各共识节点分别对应的共识校验信息对当前共识节点进行校验,可以确定区块链网络中处于有效状态的共识节点,当区块链网络中处于有效状态的共识数量达到数量阈值时,执行共识过程,可以有效保证共识的成功率,并提高区块链的共识效率;当共识节点处于异常状态时,可以实时同步共识节点的本地数据,进而增强区块链网络的事务处理能力。
请参见图7,是本申请实施例提供的一种区块链共识节点校验装置的结构示意图。该区块链共识节点校验装置可以是运行于计算机设备中的一个计算机程序(包括程序代码),例如该区块链共识节点校验装置为一个应用软件;该装置可以用于执行本申请实施例提供的方法中的相应步骤。如图7所示,该区块链共识节点校验装置1可以包括:获取模块10,确定模块11,校验模块12;
获取模块10,用于获取区块链网络中至少一个共识节点分别发送的消息数据,根据消息数据确定至少一个共识节点分别对应的共识校验信息;至少一个共识节点为区块链网络中除当前共识节点之外的其余共识节点;
确定模块11,用于将至少一个共识节点和当前共识节点分别对应的共识校验信息均确定为待校验信息,得到至少两个待校验信息,根据至少两个待校验信息中属于相同的待校验信息的数量,从至少两个待校验信息中确定目标校验信息;
校验模块12,用于若目标校验信息的数量大于或等于数量阈值,且当前共识节点的待校验信息与目标校验信息相同,则确定当前共识节点属于正常共识节点;
上述校验模块12,还用于目标校验信息的数量大于或等于数量阈值,且当前共识节点的待校验信息与目标校验信息不相同,则确定当前共识节点属于异常共识节点。
其中,获取模块10,确定模块11,校验模块12的具体功能实现方式可以参见上述图3所对应实施例中的步骤S101-步骤S104,这里不再进行赘述。
请一并参见图7,当消息数据包括应答数据包时,获取模块10可以包括:请求发送单元101,应答接收单元102;
请求发送单元101,用于向区块链网络中的至少一个共识节点发送请求数据包,以使至少一个共识节点获取与请求数据包相关联的应答数据包;请求数据包用于确认当前共识节点与至少一个共识节点之间的数据共识状态;
应答接收单元102,用于接收至少一个共识节点分别返回的应答数据包,根据应答数据包中的共识区块高度和共识阶段,确定至少一个共识节点分别对应的共识校验信息。
上述请求发送单元101具体用于:
通过心跳机制,按照时间频率信息向区块链网络中的至少一个共识节点发送请求数据包,以使至少一个共识节点获取与请求数据包相关联的应答数据包。
当消息数据包括共识消息时,获取模块10可以包括:共识消息获取单元103,校验信息确定单元104;
共识消息获取单元103,用于获取区块链网络中至少一个共识节点分别广播的共识消息,从共识消息中分别获取与至少一个共识节点相关联的共识区块高度和共识阶段;
校验信息确定单元104,用于根据共识区块高度与共识阶段,确定至少一个共识节点分别对应的共识校验信息。
其中,请求发送单元101,应答接收单元102,共识消息获取单元103,校验信息确定单元104的具体功能实现方式可以参见上述图3所对应实施例中的步骤S101,这里不再进行赘述。
请一并参见图7,确定模块11可以包括:分类单元111,统计单元112;
分类单元111,用于对至少两个待校验信息进行分类,得到至少一个信息类别;相同的信息类别具有相同的共识校验信息;
统计单元112,用于分别统计每个信息类别所包含的待校验信息的数量,将最大的数量所对应的信息类别中的待校验信息确定为目标校验信息。
其中,分类单元111,统计单元112的具体功能实现方式可以参见上述图3所对应实施例中的步骤S102,这里不再进行赘述。
请一并参见图7,该区块链共识节点校验装置1还可以包括:条件确定模块13,暂停模块14,区块高度确定模块15,第一同步模块16,共识节点确定模块17,第二同步模块18,候选节点确定模块19,区块获取模块20,工作状态确定模块21;
条件确定模块13,用于若目标校验信息对应的数量小于数量阈值,则确定区块链网络中的共识节点不满足共识处理条件;
暂停模块14,用于暂停执行区块链网络中的共识处理过程,直至区块链网络中的共识节点满足共识处理条件;
区块高度确定模块15,用于将目标校验信息中的共识区块高度确定为第一区块高度,将当前共识节点对应的待校验信息中的共识区块高度确定为第二区块高度;
第一同步模块16,用于若第二区块高度小于第一区块高度,则获取第二区块高度至第一区块高度所对应的共识区块,根据共识区块对当前共识节点中的区块数据进行同步;
共识节点确定模块17,用于若第一区块高度等于第二区块高度,则将当前共识节点对应的待校验信息中的共识阶段确定为第一共识阶段,将目标校验信息中的共识阶段确定为第二共识阶段;
第二同步模块18,用于获取第一共识阶段至第二共识阶段的触发消息数据,根据触发消息数据对当前共识节点中的消息进行同步。
候选节点确定模块19,用于将目标校验信息中的共识区块高度确定为第一区块高度,从至少一个共识节点中确定候选共识节点;候选共识节点对应的共识区块高度大于第一区块高度;
区块获取模块20,用于从候选共识节点中获取第一区块高度对应的区块,作为待验证区块;
工作状态确定模块21,用于根据目标校验信息对应的共识节点对待验证区块的验证结果,确定候选共识节点的工作状态信息。
其中,条件确定模块13,暂停模块14,候选节点确定模块19,区块获取模块20,工作状态确定模块21的具体功能实现方式可以参见上述图3所对应实施例中的步骤S103,区块高度确定模块15,第一同步模块16,共识节点确定模块17,第二同步模块181的具体功能实现方式可以参见上述图3所对应实施例中的步骤S104,这里不再进行赘述。
请一并参见图7,工作状态确定模块21可以包括:第一比较单元211,第二比较单元212;
第一比较单元211,用于若目标校验信息对应的共识节点的验证结果中通过验证的数值小于目标数值,则确定候选共识节点属于无效工作状态;
第二比较单元212,用于若目标校验信息对应的共识节点的验证结果中通过验证的数值大于或等于目标数值,则确定候选共识节点属于有效工作状态。
其中,第一比较单元211,第二比较单元212的具体功能实现方式可以参见上述图3所对应实施例中的步骤S103,这里不再进行赘述。
本申请实施例可以通过获取区块链网络中至少一个共识节点分别发送的消息数据,根据消息数据确定至少一个共识节点分别对应的共识校验信息,根据所有共识校验信息中属于相同共识校验信息的数量确定目标校验信息,若目标校验信息的数量大于或等于数量阈值,且当前共识节点的共识校验信息与目标校验信息相同,则确定当前共识节点属于正常共识节点;若目标校验信息的数量大于或等于数量阈值,且当前共识节点的共识校验信息与目标校验信息不相同,则确定当前共识节点属于异常共识节点。可见,通过区块链网络中其余共识节点发送的消息数据确定其余共识节点分别对应的共识校验信息,进而根据各共识节点分别对应的共识校验信息对当前共识节点进行校验,可以确定区块链网络中处于有效状态的共识节点,当区块链网络中处于有效状态的共识数量达到数量阈值时,执行共识过程,可以有效保证共识的成功率,并提高区块链的共识效率;当共识节点处于异常状态时,可以实时同步共识节点的本地数据,进而增强区块链网络的事务处理能力。
请参见图8,是本申请实施例提供的一种计算机设备的结构示意图。如图8所示,该计算机设备1000可以包括:处理器1001,网络接口1004和存储器1005,此外,上述计算机设备1000还可以包括:用户接口1003,和至少一个通信总线1002。其中,通信总线1002用于实现这些组件之间的连接通信。其中,用户接口1003可以包括显示屏(Display)、键盘(Keyboard),可选用户接口1003还可以包括标准的有线接口、无线接口。网络接口1004可选的可以包括标准的有线接口、无线接口(如WI-FI接口)。存储器1004可以是高速RAM存储器,也可以是非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器。存储器1005可选的还可以是至少一个位于远离前述处理器1001的存储装置。如图8所示,作为一种计算机可读存储介质的存储器1005中可以包括操作系统、网络通信模块、用户接口模块以及设备控制应用程序。
在如图8所示的计算机设备1000中,网络接口1004可提供网络通讯功能;而用户接口1003主要用于为用户提供输入的接口;而处理器1001可以用于调用存储器1005中存储的设备控制应用程序,以实现:
获取区块链网络中至少一个共识节点分别发送的消息数据,根据消息数据确定至少一个共识节点分别对应的共识校验信息;至少一个共识节点为区块链网络中除当前共识节点之外的其余共识节点;
将至少一个共识节点和当前共识节点分别对应的共识校验信息均确定为待校验信息,得到至少两个待校验信息,根据至少两个待校验信息中属于相同的待校验信息的数量,从至少两个待校验信息中确定目标校验信息;
若目标校验信息的数量大于或等于数量阈值,且当前共识节点的待校验信息与目标校验信息相同,则确定当前共识节点属于正常共识节点;
若目标校验信息的数量大于或等于数量阈值,且当前共识节点的待校验信息与目标校验信息不相同,则确定当前共识节点属于异常共识节点。
应当理解,本申请实施例中所描述的计算机设备1000可执行前文图3所对应实施例中对区块链共识节点校验方法的描述,也可执行前文图7所对应实施例中对区块链共识节点校验装置1的描述,在此不再赘述。另外,对采用相同方法的有益效果描述,也不再进行赘述。
此外,这里需要指出的是:本申请实施例还提供了一种计算机可读存储介质,且计算机可读存储介质中存储有前文提及的区块链共识节点校验装置1所执行的计算机程序,且计算机程序包括程序指令,当处理器执行程序指令时,能够执行前文图3所对应实施例中对区块链共识节点校验方法的描述,因此,这里将不再进行赘述。另外,对采用相同方法的有益效果描述,也不再进行赘述。对于本申请所涉及的计算机可读存储介质实施例中未披露的技术细节,请参照本申请方法实施例的描述。作为示例,程序指令可被部署在一个计算设备上执行,或者在位于一个地点的多个计算设备上执行,又或者,在分布在多个地点且通过通信网络互连的多个计算设备上执行,分布在多个地点且通过通信网络互连的多个计算设备可以组成区块链网络。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,计算机程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,存储介质可为磁碟、光盘、只读存储存储器(Read-Only Memory,ROM)或随机存储存储器(Random Access Memory,RAM)等。
以上所揭露的仅为本申请较佳实施例而已,当然不能以此来限定本申请之权利范围,因此依本申请权利要求所作的等同变化,仍属本申请所涵盖的范围。
Claims (13)
1.一种区块链共识节点校验方法,其特征在于,包括:
获取区块链网络中至少一个共识节点分别发送的消息数据,根据所述消息数据确定所述至少一个共识节点分别对应的共识校验信息;所述至少一个共识节点为所述区块链网络中除当前共识节点之外的其余共识节点;
将所述至少一个共识节点和所述当前共识节点分别对应的共识校验信息均确定为待校验信息,得到至少两个待校验信息,根据所述至少两个待校验信息中属于相同的待校验信息的数量,从所述至少两个待校验信息中确定目标校验信息;
若所述目标校验信息的数量大于或等于数量阈值,且所述当前共识节点的待校验信息与所述目标校验信息相同,则确定所述当前共识节点属于正常共识节点;
若所述目标校验信息的数量大于或等于所述数量阈值,且所述当前共识节点的待校验信息与所述目标校验信息不相同,则确定所述当前共识节点属于异常共识节点。
2.根据权利要求1所述的方法,其特征在于,所述消息数据包括应答数据包;
所述获取区块链网络中至少一个共识节点分别发送的消息数据,根据所述消息数据确定所述至少一个共识节点分别对应的共识校验信息,包括:
向所述区块链网络中的至少一个共识节点发送请求数据包,以使所述至少一个共识节点获取与所述请求数据包相关联的应答数据包;所述请求数据包用于确认所述当前共识节点与所述至少一个共识节点之间的数据共识状态;
接收所述至少一个共识节点分别返回的所述应答数据包,根据所述应答数据包中的共识区块高度和共识阶段,确定所述至少一个共识节点分别对应的共识校验信息。
3.根据权利要求2所述的方法,其特征在于,所述向所述区块链网络中的至少一个共识节点发送请求数据包,以使所述至少一个共识节点获取与所述请求数据包相关联的应答数据包,包括:
通过心跳机制,按照时间频率信息向所述区块链网络中的至少一个共识节点发送请求数据包,以使所述至少一个共识节点获取与所述请求数据包相关联的应答数据包。
4.根据权利要求1所述的方法,其特征在于,所述消息数据包括共识消息;
所述获取区块链网络中至少一个共识节点分别发送的消息数据,根据所述消息数据确定所述至少一个共识节点分别对应的共识校验信息,包括:
获取区块链网络中至少一个共识节点分别广播的共识消息,从所述共识消息中分别获取与所述至少一个共识节点相关联的共识区块高度和共识阶段;
根据所述共识区块高度与所述共识阶段,确定所述至少一个共识节点分别对应的共识校验信息。
5.根据权利要求1所述的方法,其特征在于,所述根据所述至少两个待校验信息中属于相同的待校验信息的数量,从所述至少两个待校验信息中确定目标校验信息,包括:
对所述至少两个待校验信息进行分类,得到至少一个信息类别;相同的信息类别具有相同的待校验信息;
分别统计每个信息类别所包含的待校验信息的数量,将最大的数量所对应的信息类别中的待校验信息确定为所述目标校验信息。
6.根据权利要求1所述的方法,其特征在于,还包括:
若所述目标校验信息对应的数量小于所述数量阈值,则确定所述区块链网络中的共识节点不满足共识处理条件;
暂停执行所述区块链网络中的共识处理过程,直至所述区块链网络中的共识节点满足共识处理条件。
7.根据权利要求1所述的方法,其特征在于,还包括:
将所述目标校验信息中的共识区块高度确定为第一区块高度,将所述当前共识节点对应的待校验信息中的共识区块高度确定为第二区块高度;
若所述第二区块高度小于所述第一区块高度,则获取所述第二区块高度至所述第一区块高度所对应的共识区块,根据所述共识区块对所述当前共识节点中的区块数据进行同步。
8.根据权利要求7所述的方法,其特征在于,还包括:
若所述第一区块高度等于所述第二区块高度,则将所述当前共识节点对应的待校验信息中的共识阶段确定为第一共识阶段,将所述目标校验信息中的共识阶段确定为第二共识阶段;
获取所述第一共识阶段至所述第二共识阶段的触发消息数据,根据所述触发消息数据对所述当前共识节点中的消息进行同步。
9.根据权利要求5所述的方法,其特征在于,还包括:
将所述目标校验信息中的共识区块高度确定为第一区块高度,从所述至少一个共识节点中确定候选共识节点;所述候选共识节点对应的共识区块高度大于所述第一区块高度;
从所述候选共识节点中获取所述第一区块高度对应的区块,作为待验证区块;
根据所述目标校验信息对应的共识节点对所述待验证区块的验证结果,确定所述候选共识节点的工作状态信息。
10.根据权利要求9所述的方法,其特征在于,所述根据所述目标校验信息对应的共识节点对所述待验证区块的验证结果,确定所述候选共识节点的工作状态信息,包括:
若所述目标校验信息对应的共识节点的验证结果中通过验证的数值小于目标数值,则确定所述候选共识节点属于无效工作状态;
若所述目标校验信息对应的共识节点的验证结果中通过验证的数值大于或等于目标数值,则确定所述候选共识节点属于有效工作状态。
11.一种区块链共识节点校验装置,其特征在于,包括:
获取模块,用于获取区块链网络中至少一个共识节点分别发送的消息数据,根据所述消息数据确定所述至少一个共识节点分别对应的共识校验信息;所述至少一个共识节点为所述区块链网络中除当前共识节点之外的其余共识节点;
确定模块,用于将所述至少一个共识节点和所述当前共识节点分别对应的共识校验信息均确定为待校验信息,得到至少两个待校验信息,根据所述至少两个待校验信息中属于相同的待校验信息的数量,从所述至少两个待校验信息中确定目标校验信息;
校验模块,用于若所述目标校验信息的数量大于或等于数量阈值,且所述当前共识节点的待校验信息与所述目标校验信息相同,则确定所述当前共识节点属于正常共识节点;
所述校验模块,还用于若所述目标校验信息的数量大于或等于所述数量阈值,且所述当前共识节点的待校验信息与所述目标校验信息不相同,则确定所述当前共识节点属于异常共识节点。
12.一种计算机设备,其特征在于,包括存储器和处理器,所述存储器存储有计算机程序,所述计算机程序被所述处理器执行时,使得所述处理器执行如权利要求1至10中任一项所述方法的步骤。
13.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,所述计算机程序包括程序指令,所述程序指令当被处理器执行时,执行如权利要求1至10中任一项所述方法的步骤。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110698294.XA CN113282603B (zh) | 2020-03-26 | 2020-03-26 | 区块链共识节点校验方法、装置、设备以及存储介质 |
CN202010224584.6A CN111444211B (zh) | 2020-03-26 | 2020-03-26 | 区块链共识节点校验方法、装置、设备以及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010224584.6A CN111444211B (zh) | 2020-03-26 | 2020-03-26 | 区块链共识节点校验方法、装置、设备以及存储介质 |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110698294.XA Division CN113282603B (zh) | 2020-03-26 | 2020-03-26 | 区块链共识节点校验方法、装置、设备以及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111444211A CN111444211A (zh) | 2020-07-24 |
CN111444211B true CN111444211B (zh) | 2021-07-13 |
Family
ID=71648093
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010224584.6A Active CN111444211B (zh) | 2020-03-26 | 2020-03-26 | 区块链共识节点校验方法、装置、设备以及存储介质 |
CN202110698294.XA Active CN113282603B (zh) | 2020-03-26 | 2020-03-26 | 区块链共识节点校验方法、装置、设备以及存储介质 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110698294.XA Active CN113282603B (zh) | 2020-03-26 | 2020-03-26 | 区块链共识节点校验方法、装置、设备以及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (2) | CN111444211B (zh) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112035886B (zh) * | 2020-08-31 | 2023-01-10 | 深圳前海微众银行股份有限公司 | 区块链的共识方法、装置、共识节点、系统以及存储介质 |
CN112422341B (zh) * | 2020-11-18 | 2021-09-28 | 腾讯科技(深圳)有限公司 | 区块链网络的故障检测方法及相关设备 |
CN112994882B (zh) * | 2021-04-21 | 2021-07-20 | 腾讯科技(深圳)有限公司 | 基于区块链的鉴权方法、装置、介质及设备 |
CN113672994B (zh) * | 2021-09-03 | 2023-12-01 | 中国联合网络通信集团有限公司 | 一种基于区块链的烹饪设备数据管理方法、装置及其系统 |
CN114338668B (zh) * | 2021-12-07 | 2023-10-31 | 中国联合网络通信集团有限公司 | 基于共识机制的数据验证方法、系统、存储介质及设备 |
CN117130823A (zh) * | 2022-05-19 | 2023-11-28 | 腾讯科技(深圳)有限公司 | 基于区块链网络的数据处理方法及相关产品 |
CN115567543A (zh) * | 2022-08-31 | 2023-01-03 | 云南电网有限责任公司信息中心 | 基于区块链的边缘侧交易数据的共识方法、装置及设备 |
CN115225639B (zh) * | 2022-09-15 | 2022-12-27 | 杭州趣链科技有限公司 | 共识可信集群的变更方法、装置、计算机设备及介质 |
CN115687527B (zh) * | 2022-11-09 | 2023-10-10 | 北京北纬三十度网络科技有限公司 | 一种基于区块链大数据的存储系统 |
CN116991623B (zh) * | 2023-08-30 | 2024-01-02 | 杭州趣链科技有限公司 | 区块链节点异常恢复方法、装置、电子设备及存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106506203A (zh) * | 2016-10-25 | 2017-03-15 | 杭州云象网络技术有限公司 | 一种应用于区块链的节点监控系统 |
CN108564469A (zh) * | 2018-04-11 | 2018-09-21 | 北京奇虎科技有限公司 | 区块链节点的画像数据获取方法、装置及计算设备 |
CN109981405A (zh) * | 2019-03-20 | 2019-07-05 | 上海和数软件有限公司 | 节点管理方法、装置及计算机可读存储介质 |
CN110705893A (zh) * | 2019-10-11 | 2020-01-17 | 腾讯科技(深圳)有限公司 | 一种业务节点管理方法、装置、设备以及存储介质 |
CN110866546A (zh) * | 2019-10-30 | 2020-03-06 | 深圳前海微众银行股份有限公司 | 一种共识节点的评估方法及装置 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107392040B (zh) * | 2017-04-28 | 2019-08-09 | 阿里巴巴集团控股有限公司 | 一种共识验证的方法及装置 |
US11063746B2 (en) * | 2018-04-19 | 2021-07-13 | Electronics And Telecommunications Research Institute | Method for selecting consensus node using nonce and method and apparatus for generating blockchain using the same |
BR112019008172B1 (pt) * | 2018-11-07 | 2022-01-25 | Advanced New Technologies Co., Ltd | Método implementado por computador para facilitar um processo de consenso em uma rede de protocolo de confiança baseada na tolerância a falhas bizantinas práticas, meio de armazenamento não transitório legível por computador e sistema |
CN110602108B (zh) * | 2019-09-16 | 2021-08-10 | 腾讯科技(深圳)有限公司 | 基于区块链网络的数据通信方法、装置、设备及存储介质 |
-
2020
- 2020-03-26 CN CN202010224584.6A patent/CN111444211B/zh active Active
- 2020-03-26 CN CN202110698294.XA patent/CN113282603B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106506203A (zh) * | 2016-10-25 | 2017-03-15 | 杭州云象网络技术有限公司 | 一种应用于区块链的节点监控系统 |
CN108564469A (zh) * | 2018-04-11 | 2018-09-21 | 北京奇虎科技有限公司 | 区块链节点的画像数据获取方法、装置及计算设备 |
CN109981405A (zh) * | 2019-03-20 | 2019-07-05 | 上海和数软件有限公司 | 节点管理方法、装置及计算机可读存储介质 |
CN110705893A (zh) * | 2019-10-11 | 2020-01-17 | 腾讯科技(深圳)有限公司 | 一种业务节点管理方法、装置、设备以及存储介质 |
CN110866546A (zh) * | 2019-10-30 | 2020-03-06 | 深圳前海微众银行股份有限公司 | 一种共识节点的评估方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN111444211A (zh) | 2020-07-24 |
CN113282603A (zh) | 2021-08-20 |
CN113282603B (zh) | 2022-09-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111444211B (zh) | 区块链共识节点校验方法、装置、设备以及存储介质 | |
CN111427957B (zh) | 区块链投票信息校验方法、装置、设备以及存储介质 | |
CN110601853B (zh) | 一种区块链私钥生成方法以及设备 | |
CN111445333B (zh) | 区块生成方法、装置、计算机设备以及存储介质 | |
CN111382456B (zh) | 提案消息处理方法、装置、设备以及存储介质 | |
CN112446785A (zh) | 跨链交易方法、系统、装置、设备和存储介质 | |
WO2021233049A1 (zh) | 基于区块链的数据处理方法、装置、设备及可读存储介质 | |
CN111314067B (zh) | 区块存储方法、装置、计算机设备及存储介质 | |
CN111654395B (zh) | 投票信息处理方法、装置、设备以及存储介质 | |
US20230037932A1 (en) | Data processing method and apparatus based on blockchain network, and computer device | |
CN111291060A (zh) | 一种管理区块链节点的方法、装置及计算机可读介质 | |
CN113326516A (zh) | 区块链共识方法、区块链系统及计算机设备 | |
CN111488372A (zh) | 一种数据处理方法、设备及存储介质 | |
CN113259130B (zh) | 一种交易数据处理方法、装置、设备以及介质 | |
CN113379420B (zh) | 区块链的执行智能合约方法、计算机设备及区块链系统 | |
CN110866265A (zh) | 一种基于区块链的数据存储方法、设备及存储介质 | |
WO2023077796A1 (zh) | 骨干节点接入方法和区块链系统 | |
CN110968644A (zh) | 一种数据处理方法以及设备 | |
CN113067707A (zh) | 基于区块链的数据处理方法、装置、设备及可读存储介质 | |
CN110647583B (zh) | 一种区块链构建方法、装置、终端及介质 | |
US20220239668A1 (en) | Blockchain-based message processing method and apparatus, device, and storage medium | |
CN112200680B (zh) | 区块链节点管理方法、装置、计算机以及可读存储介质 | |
CN111327602B (zh) | 一种设备接入处理方法、设备及存储介质 | |
CN110570197B (zh) | 一种基于区块链的数据处理方法以及设备 | |
CN112417052B (zh) | 区块链网络中的数据同步方法、装置、设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 40026352 Country of ref document: HK |
|
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |