CN111654395B - 投票信息处理方法、装置、设备以及存储介质 - Google Patents
投票信息处理方法、装置、设备以及存储介质 Download PDFInfo
- Publication number
- CN111654395B CN111654395B CN202010483872.3A CN202010483872A CN111654395B CN 111654395 B CN111654395 B CN 111654395B CN 202010483872 A CN202010483872 A CN 202010483872A CN 111654395 B CN111654395 B CN 111654395B
- Authority
- CN
- China
- Prior art keywords
- consensus
- voting
- proposal
- voting information
- node
- 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/30—Decision processes by autonomous network management units using voting and bidding
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/02—Details
- H04L12/16—Arrangements for providing special services to substations
- H04L12/18—Arrangements for providing special services to substations for broadcast or conference, e.g. multicast
- H04L12/1854—Arrangements for providing special services to substations for broadcast or conference, e.g. multicast with non-centralised forwarding system, e.g. chaincast
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/46—Secure multiparty computation, e.g. millionaire problem
- H04L2209/463—Electronic voting
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/50—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using hash chains, e.g. blockchains or hash trees
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请实施例提供了一种投票信息处理方法、装置、设备以及存储介质,该方法包括:获取至少两个共识节点在第一共识阶段针对第一提案的第一共识阶段投票信息,根据第一本地投票信息和第一共识阶段投票信息获取第一赞成投票数;若第一赞成投票数达到数量阈值则根据第一赞成投票数确定第二本地投票信息;在第二共识阶段中根据第二本地投票信息和至少两个共识节点针对第一提案的第二共识阶段投票信息,获取第二赞成投票数;若第二赞成投票数小于数量阈值则确定第一提案未通过共识,将第一提案的交易区块设置为锁定状态:当获取到第二提案时,根据第二提案和交易区块,对第一提案重新进行共识。采用本申请,可以提高区块链网络中的区块上链成功率。
Description
技术领域
本申请涉及区块链技术领域,尤其涉及投票信息处理方法、装置、设备以及存储介质。
背景技术
区块链是一种去中心化的分布式账本系统,具有数据不可篡改、去中心化、开放性的特点。共识机制作为区块链技术的核心,可以保证最新区块被准确添加至区块链,以及节点存储的区块链信息一致不分叉,共识节点在共识机制中具有重要作用。
现有技术中,共识节点可以对区块链网络中生成的新区块进行验证,根据验证结果生成新区块对应的投票信息,并在区块链网络中对投票信息进行广播;区块链网络中的每个共识节点均可以获取各共识节点分别针对新区块的投票信息,当统计得到新区块的赞成投票数达到数量阈值时,共识节点可以将新区块进行落盘。然而,区块链网络中的共识节点可能会由于断网或时延等原因,使得共识节点获取到的投票信息不完整,造成所统计的新区块的赞成投票数小于数量阈值,将有效的新区块误判为未通过共识的区块,进而造成该新区块未写入区块链中,降低了区块链网络中的区块上链成功率。
发明内容
本申请实施例提供一种投票信息处理方法、装置、设备以及存储介质,可以提高区块链网络中的区块上链成功率。
本申请实施例一方面提供了一种投票信息处理方法,包括:
获取至少两个共识节点在第一共识阶段分别发送的针对第一提案的第一共识阶段投票信息,根据第一提案的第一本地投票信息和第一共识阶段投票信息获取第一赞成投票数;
若第一赞成投票数大于或等于数量阈值,则根据第一赞成投票数确定第二本地投票信息;
在第二共识阶段中,将第二本地投票信息广播至上述至少两个共识节点,根据第二本地投票信息和至少两个共识节点针对第一提案的第二共识阶段投票信息,获取第二赞成投票数;第一共识阶段和第二共识阶段均属于第一提案的共识周期,第一共识阶段早于第二共识阶段;
若第二赞成投票数小于数量阈值,则确定第一提案的共识结果为共识未通过结果,将第一提案中所包含的交易区块设置为锁定状态;
当获取到第二提案时,根据第二提案和具有锁定状态的交易区块,对第一提案重新进行共识处理。
本申请实施例一方面提供了一种投票信息处理装置,其特征在于,包括:
第一获取模块,用于获取至少两个共识节点在第一共识阶段分别发送的针对第一提案的第一共识阶段投票信息,根据第一提案的第一本地投票信息和第一共识阶段投票信息获取第一赞成投票数;
确定模块,用于若第一赞成投票数大于或等于数量阈值,则根据第一赞成投票数确定第二本地投票信息;
第二获取模块,用于在第二共识阶段中,将第二本地投票信息广播至上述至少两个共识节点,根据第二本地投票信息和至少两个共识节点针对第一提案的第二共识阶段投票信息,获取第二赞成投票数;第一共识阶段和第二共识阶段均属于第一提案的共识周期,第一共识阶段早于第二共识阶段;
状态设置模块,用于若第二赞成投票数小于数量阈值,则确定第一提案的共识结果为共识未通过结果,将第一提案中所包含的交易数据设置为锁定状态;
共识处理模块,用于当获取到第二提案时,根据第二提案和具有锁定状态的交易区块,对第一提案重新进行共识处理。
其中,该装置还包括:
提案获取模块,用于获取第一提案,获取第一提案对应的提案生成节点,从区块链网络中获取节点委员会列表;节点委员会列表包括区块链网络中处于有效工作状态的共识节点;
交易执行模块,用于执行第一提案所包含的交易区块中的交易数据,得到交易数据对应的交易结果;
第一本地投票模块,用于根据提案生成节点、节点委员会节点列表以及交易结果,确定第一共识阶段中当前共识节点针对第一提案的第一本地投票信息。
其中,第一获取模块包括:
投票信息获取单元,用于获取至少两个共识节点在第一共识阶段分别发送的针对第一提案的第一共识阶段投票信息;
添加单元,用于若第一共识阶段投票信息满足区块链网络中的投票合法条件,则将第一共识阶段投票信息添加至投票信息集合;
统计单元,用于将第一本地投票信息添加至投票信息集合,获取投票信息集合中赞成投票信息的总数量,确定为第一提案对应的第一赞成投票数。
其中,该装置还包括:
第一验证模块,用于获取第一共识阶段投票信息对应的发送节点,若第一共识阶段投票信息为发送节点在第一共识阶段中针对第一提案的首次投票信息,则确定第一共识阶段投票信息满足投票合法条件。
其中,该装置还包括:
第二验证模块,用于获取第一共识阶段投票信息对应的接收时间,若接收时间属于区块链网络中的消息时间窗口,则确定第一共识阶段投票信息满足投票合法条件。
其中,确定模块包括:
参照表生成单元,用于若第一赞成投票数大于或等于数量阈值,则根据第一本地投票信息与第一共识阶段投票信息生成第一投票参照表;
本地投票信息确定单元,用于根据第一赞成投票数和第一投票参照表确定第二本地投票信息为投票成功结果;第一投票参照表包括当前共识节点所获取的满足投票合法条件的第一共识阶段投票信息。
其中,该装置还包括:
第二本地投票模块,用于若第一赞成投票数小于数量阈值,则根据第一赞成投票数确定第二本地投票信息为投票失败结果。
其中,第二获取模块包括:
广播单元,用于在第二共识阶段中,将第二本地投票信息在区块链网络中进行广播,以使至少两个共识节点对第二本地投票信息中所包含的第一投票参照表进行验证,并根据验证通过后的第一投票参照表确定第一提案的共识结果;
投票数确定单元,用于获取至少两个共识节点分别发送的针对第一提案的第二共识阶段投票信息,根据第二共识阶段投票信息和第二本地投票信息中的投票成功结果,确定第一提案对应的第二赞成投票数。
其中,上述第二共识阶段投票信息包括第二投票参照表;
该装置还包括:
次数统计模块,用于根据第一投票参照表和第二投票参照表,统计区块链网络中每个共识节点分别对应的未投票次数;
异常节点确定模块,用于将未投票次数大于异常次数阈值的共识节点确定为异常共识节点,从区块链网络的节点委员会列表中删除异常共识节点。
其中,该装置还包括:
记账模块,用于若第二赞成投票数大于或等于数量阈值,则确定第一提案对应的共识结果为共识通过结果,将第一提案中所包含的交易区块进行记账处理。
其中,共识处理模块包括:
区块获取单元,用于获取第二提案中所包含的待共识区块;
重新共识单元,用于若待共识区块的区块高度和交易区块的区块高度相同,则删除第二提案,对包含交易区块的第一提案重新进行共识处理,得到第一提案的更新共识结果;
区块释放模块,用于若待共识区块的区块高度和交易区块的区块高度不相同,则将锁住状态切换为释放状态,对具有释放状态的交易区块进行记账处理,对第二提案进行共识处理,得到第二提案对应的提案共识结果。
本申请实施例一方面提供了一种计算机设备,包括存储器和处理器,存储器存储有计算机程序,计算机程序被处理器执行时,使得处理器执行本申请实施例中一方面中方法的步骤。
本申请实施例一方面提供了一种计算机可读存储介质,计算机可读存储介质存储有计算机程序,计算机程序包括程序指令,程序指令当被处理器执行时,执行如本申请实施例中一方面中方法的步骤。
本申请实施例可以通过对第一提案进行共识验证,得到当前共识节点在第一共识阶段中对该第一提案的第一本地投票,获取至少两个共识节点在第一共识阶段分别发送的针对第一提案的第一共识阶段投票信息,根据第一本地投票信息和第一共识阶段投票信息获取第一赞成投票数;若第一赞成投票数大于或等于数量阈值,则根据第一赞成投票数确定第二本地投票信息,在第二共识阶段中将第二本地投票信息广播给至少两个共识节点,根据第二本地投票信息和至少两个共识节点针对第一提案的第二共识阶段投票信息,获取第二赞成投票数;若第二赞成投票数小于数量阈值,则确定第一提案的共识结果为共识未通过结果,将第一提案中所包含的交易区块设置为锁定状态,当获取到第二提案时,可以根据第二提案和具有锁定状态的交易区块,对第一提案重新进行共识处理。可见,区块链网络中提案的共识过程可以包括两个共识阶段,当提案在第一共识阶段中达成共识,且在第二共识阶段中未达成共识,即第一赞成投票数大于或等于数量阈值,且第二赞成投票数小于数量阈值时,该提案未达成最终共识,此时可以将该提案中的交易区块设置为锁定状态并进行缓存,在下一共识周期中可以重新对包含该交易区块的提案进行共识处理,进而可以提高区块链网络中区块的上链成功率。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的一种网络架构图;
图2是本申请实施例提供的一种投票信息处理场景示意图;
图3是本申请实施例提供的一种投票信息处理方法的流程示意图;
图4是本申请实施例提供的一种投票信息的验证过程示意图;
图5是本申请实施例提供的一种确定异常共识节点的示意图;
图6是本申请提供的一种提案处理过程的示意图;
图7是本申请实施例提供的一种投票信息处理流程图;
图8是本申请实施例提供的一种投票信息处理装置的结构示意图;
图9是本申请实施例提供的一种计算机设备的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
区块链(Blockchain)是一种分布式数据存储、点对点传输(P2P传输)、共识机制、加密算法等计算机技术的新型应用模式。区块链本质上是一个去中心化的数据库,是一串使用密码学方法相关联产生的数据块,每一个数据块中包含了一批次网络交易的信息,用于验证其信息的有效性(防伪)和生成下一个区块。区块链可以包括区块链底层平台、平台产品服务层以及应用服务层。
区块链底层平台可以包括用户管理、基础服务、智能合约以及运营监控等处理模块。其中,用户管理模块负责所有区块链参与者的身份信息管理,包括维护公私钥生成(账户管理)、密钥管理以及用户真实身份和区块链地址对应关系维护(权限管理)等,并且在授权的情况下,监管和审计某些真实身份的交易情况,提供风险控制的规则配置(风控审计);基础服务模块部署在所有区块链节点设备上,用来验证业务请求的有效性,并对有效请求完成共识后记录到存储上,对于一个新的业务请求,基础服务先对接口适配解析和鉴权处理(接口适配),然后通过共识算法将业务信息加密(共识管理),在加密之后完整一致的传输至共享账本上(网络通信),并进行记录存储;智能合约模块负责合约的注册发行以及合约触发和合约执行,开发人员可以通过某种编程语言定义合约逻辑,发布到区块链上(合约注册),根据合约条款的逻辑,调用密钥或者其它的事件触发执行,完成合约逻辑,同时还提供对合约升级注销的功能;运营监控模块主要负责产品发布过程中的部署、配置的修改、合约设置、云适配以及产品运行中的实时状态的可视化输出,例如:告警、监控网络情况、监控节点设备健康状态等。
请参见图1,是本申请实施例提供的一种网络架构图。如图1所示,该网络架构可以包括多个节点设备,如图1所示,具体可以包括区块链网络中的节点设备10a、节点设备10b、节点设备10c、节点设备10d、节点设备10e以及节点设备10f。其中,节点设备10a、节点设备10b、节点设备10c、节点设备10d以及节点设备10e均可以表示为区块链网络中的区块链节点,区块链节点可以包括共识节点和同步节点,共识节点可以共享区块链网络中的区块链数据,并可以参与区块链网络中的区块共识过程,同步节点可以共享区块链网络中的区块链数据,不具备参与区块链网络共识过程的权限。节点设备10f是指区块链网络之外的节点设备,节点设备10f可以将交易数据以网络消息数据的形式上传至区块链网络。
节点设备10f在区块链网络中完成身份注册后,可以向区块链网络上传交易数据,区块链网络中的区块链节点在接收到节点设备10f上传的交易数据后,可以将交易数据打包成新区块,并将包含新区块的区块提案广播至区块链网络中的共识节点,以使共识节点对区块提案进行共识验证,在区块链网络中达成共识的区块提案中所包含的新区块可以进行正式上链。当然,区块链网络中的共识节点在接收到区块提案后,可以在当前共识周期内对区块提案进行共识处理,得到该区块提案的最终共识结果。其中,区块链网络中的共识周期可以包括第一共识阶段和第二共识阶段,第一共识阶段早于第二共识阶段,共识周期可以理解为区块链网络中针对单个区块的完整共识过程。当检测到区块提案在第二共识阶段中达成共识时,可以确定该区块提案的最终共识结果为共识通过,进而可以将区块提案中的新区块进行正式上链;当检测到区块提案在第一共识阶段未达成共识,且在第二共识阶段中未达成共识时,可以确定该区块提案的最终共识结果为共识未通过,并可以删除该区块提案;当检测到区块提案在第一共识阶段达成共识,且在第二共识阶段中未达成共识时,可以确定该区块提案的最终共识结果为共识未通过,进而将区块提案中的新区块设置为锁定状态,在接收到下一个区块提案时,可以对具有锁定状态的新区块重新进行共识处理,进而可以提高区块链网路中区块的上链成功率。
其中,节点设备10a、节点设备10b、节点设备10c、节点设备10d、节点设备10e以及节点设备10f均可以是终端设备,或者是服务器,其中,终端设备可以包括智能手机、平板电脑、笔记本电脑、台式计算机、掌上电脑、移动互联网设备(mobile internet device,MID)、可穿戴设备(例如智能手表、智能手环等)等,但并不局限于此。服务器可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云计算服务的云服务器。终端以及服务器可以通过有线或无线通信方式进行直接或间接地连接,本申请在此不做限制。
其中,云计算(cloud computing)指IT基础设施的交付和使用模式,指通过网络以按需、易扩展的方式获得所需资源;广义云计算指服务的交付和使用模式,指通过网络以按需、易扩展的方式获得所需服务。这种服务可以是IT和软件、互联网相关,也可是其他服务。云计算是网格计算(Grid Computing )、分布式计算(DistributedComputing)、并行计算(Parallel Computing)、效用计算(Utility Computing)、网络存储(Network StorageTechnologies)、虚拟化(Virtualization)、负载均衡(Load Balance)等传统计算机和网络技术发展融合的产物。
随着互联网、实时数据流、连接设备多样化的发展,以及搜索服务、社会网络、移动商务和开放协作等需求的推动,云计算迅速发展起来。不同于以往的并行分布式计算,云计算的产生从理念上将推动整个互联网模式、企业管理模式发生革命性的变革。
请参见图2,是本申请实施例提供的一种投票信息处理场景示意图。区块链网络中的区块链节点可以收集区块链网络中的交易数据,并将收集到的交易数据打包成新区块,生成该新区块的区块链节点也可以称为区块生成节点,区块生成节点可以将包含该新区块的提案在区块链网络中进行广播,区块链网络中的共识节点均可以获取该区块生成节点所广播的提案,并对提案进行共识处理。上述图1所对应实施例中的节点设备10a为共识节点时,以节点设备10a为例,对本申请提出的投票信息处理方案进行说明。如图2所示,区块链网络中的区块链节点可以将交易数据打包成新区块20b,并将包含该新区块20b的提案20a在区块链网络中进行广播,该提案消息20a可以包括但不限于:区块链节点所生成的新区块20b(此时的区块链节点可以称为区块生成节点),区块生成节点的签名信息,区块生成节点的工作状态,新区块20b的区块高度;新区块20b中可以包括客户端上传至区块链网络的多笔交易数据,每笔交易数据均可以是指客户端根据用户的交易操作所生成的数据,每笔交易数据均可以包括交易发起方、交易接收方以及交易内容;新区块20b中所包含的多笔交易数据可以由同一客户端在一段时间内上传至区块链网络的,或者是由不同客户端在一段时间内上传至区块链网络的。
节点设备10a(为区块链网络中的共识节点)在接收到提案20a后,可以在当前共识周期内对提案20a进行共识验证,节点设备10a对提案20a的验证过程可以包括但不限于:验证提案20a中所包含的区块生成节点的有效性(如区块生成节点属于节点委员会列表,可以表明区块生成节点为有效节点;区块生成节点不属于节点委员会列表,可以表明区块生成节点为无效节点;其中,节点委员会列表包括区块链网络中处于有效工作状态的共识节点,节点委员会列表中所包含的每个共识节点均可以打包新区块,并执行新区块的共识过程),验证生成区块节点签名信息的有效性(如使用区块生成节点上传至区块链网络的公钥对提案20a进行验签,验签通过表明签名信息为有效签名,验签未通过表明签名信息为无效签名),验证新区块20b的区块头中的默克尔树根的有效性(如重新计算新区块20b对应的默克尔树根,若重新计算得到的默克尔树根与区块头中的默克尔树根相同,可以表明区块头中的默克尔树根是有效的;若重新计算得到的默克尔树根与区块头中的默克尔树根不相同,可以表明区块头中的默克尔树根是无效的)、验证新区块20b中多笔交易数据对应的执行结果的有效性。当节点设备10a检测到上述验证过程中的信息(如区块生成节点、签名信息以及默克尔树根等)均为有效信息时,可以确定提案20a的共识验证结果为:验证通过;当节点设备10a检测到上述验证过程中存在信息为无效信息时,可以确定提案20a的共识验证结果为:验证未通过。节点设备10a可以根据共识验证结果生成提案20a在第一共识阶段中的第一本地投票信息(即节点设备10a在第一共识阶段中本身针对提案20a的投票信息),共识验证结果为验证通过时,第一本地投票信息为赞成投票信息;共识验证结果为验证未通过时,第一本地投票信息为反对投票信息。
节点设备10a可以将第一本地投票信息在区块链网络中进行广播,以使区块链网络中除节点设备10a之外的其余共识节点均可以收到该第一本地投票信息;当然,区块链网络中的每个共识节点均可以对提案20a进行共识验证,得到第一共识阶段中针对提案20a的第一共识阶段投票信息,其余共识节点均可以将自身所得到的第一共识阶段投票信息进行广播,因此,节点设备10a可以获取其余共识节点在第一共识阶段中针对提案20a的第一共识阶段投票信息,并将所接收到的第一共识阶段投票信息添加至第一共识阶段投票信息集合20c。该第一共识阶段投票信息集合20c可以包括第一共识阶段中每个共识节点分别针对提案20a的投票信息,如节点设备10a在第一共识阶段中针对提案20a的第一本地投票信息,共识节点1在第一共识阶段中针对提案20a的第一共识阶段投票信息1,共识节点2在第一共识阶段中针对提案20a的第一共识阶段投票信息2等。可以理解的是,节点设备10a在接收到其余共识节点所广播的第一共识阶段投票信息时,可以对第一共识阶段投票信息进行有效性检测,检测结果为有效的第一共识阶段投票信息可以添加至第一共识阶段投票信息集合20c。
节点设备10a可以对第一共识阶段投票信息集合20c中所包含的投票信息进行统计,得到提案20a在第一共识阶段中所获得的赞成投票信息的数量为m,赞成投票信息的数量可以称为第一赞成投票数;节点设备10a可以根据第一赞成投票数生成第二本地投票信息,第一赞成投票数m大于或等于数量阈值(如区块链网络中共识节点数量的2/3)时,第二本地投票信息为投票成功结果;第一赞成投票数m小于数量阈值时,第二本地投票信息为投票失败结果。节点设备10a同样可以将第二本地投票信息在区块链网络中进行广播,以使其余共识节点均可以收到该第二本地投票信息,当然,节点设备10a可以接收其余共识节点在第二共识阶段中针对提案20a的第二共识阶段投票信息,并将第二共识阶段投票信息添加至第二共识阶段投票信息集合20d。该第二共识阶段投票信息集合20d可以包括第一共识阶段中每个共识节点分别针对提案20a的投票信息,如节点设备10a在第二共识阶段中针对提案20a的第二本地投票信息,共识节点1在第二共识阶段中针对提案20a的第二共识阶段投票信息1,共识节点2在第二共识阶段中针对提案20a的第二共识阶段投票信息2等。可以理解的是,节点设备10a在接收到其余共识节点所广播的第二共识阶段投票信息时,可以对第二共识阶段投票信息进行有效性检测,检测结果为有效的第二共识阶段投票信息可以添加至第二共识阶段投票信息集合20d。
节点设备10a可以对第二共识阶段投票信息集合20d中所包含的投票信息进行统计,得到提案20a在第二共识阶段中所获得的投票成功结果的数量为n,投票成功结果的数量可以称为第二赞成投票数。当第二赞成投票数n大于或等于数量阈值时,可以确定提案20a通过共识,将通过共识的提案20a中的新区块20b进行正式上链,即将新区块20b添加至节点设备10a所存储的区块链中,该区块链可以由一系列的区块连接而成,如区块链可以包括区块20e、区块20f、新写入的新区块20b等,后一区块的区块头中可以包括前一区块对应的哈希值,如新区块20b的区块头中可以包括区块20f对应的哈希值;当第二赞成投票数n小于数量阈值时,可以确定提案20a未通过共识,进而可以将提案20a删除;当第一赞成投票数m大于或等于数量阈值,且第二赞成投票数小于数量阈值时,可以确定提案20a未通过共识,可以将提案20a中的新区块20b设置为锁住状态,在下一轮共识过程中,可以对新区块20b重新进行共识验证,根据重新共识验证后的结果,实现对新区块20b的上链处理,进而可以提高区块链网络中的区块上链成功率。
请参见图3,是本申请实施例提供的一种投票信息处理方法的流程示意图,可以理解的是,该方法可以由区块链网络中的共识节点执行,共识节点可以是区块链网络中的节点服务器,或者是共识网络中的其他节点设备。如图3所示,该投票信息处理方法可以包括以下步骤:
步骤S101,获取至少两个共识节点在第一共识阶段分别发送的针对第一提案的第一共识阶段投票信息,根据第一提案的第一本地投票信息和第一共识阶段投票信息获取第一赞成投票数。
具体的,在当前共识节点获取第一提案在第一共识阶段中的第一共识阶段投票信息之前,区块链网络中共识节点需要获取上述第一提案(如上述图2所对应实施实例中的提案20a),并对所接收到的第一提案进行共识验证。以区块链网络中的任一共识节点(此时的共识节点可以称为当前共识节点)为例,当前共识节点可以获取第一提案,获取该第一提案对应的区块生成节点,从区块链网络中获取节点委员会列表,其中,第一提案中可以包括:第一提案对应的区块生成节点(即生成第一提案中的交易区块的区块链节点),交易区块(如上述图1所对应实施例中的新区块20b),区块生成节点的签名信息,区块生成节点的工作状态,交易区块对应的区块高度等信息,交易区块可以包括区块头和区块体,区块头中存储有交易区块的输入信息特征值(也可以称为当前区块哈希值)、前一区块的区块头特征值(也可以称为前一区块哈希值)、版本号、时间戳和难度值,区块体中存储有多笔交易数据,每笔交易数据均可以是指客户端根据用户的交易操作所生成的数据;节点委员会列表可以包括区块链网络中处于有效工作状态的共识节点,该节点委员会列表中所包含的每个共识节点均可以用于收集区块链网络中的交易数据并打包成区块,随后对打包的新区块进行广播,共识节点在节点委员会列表中的排列顺序可以表示该共识节点在区块链网络中生成区块的顺序,区块链网络中的区块均可以由节点委员会列表中的共识节点来打包生成。例如,节点委员会列表中所包含的共识节点的排列顺序为:共识节点1-共识节点2-共识节点3-共识节点4,区块链网络中共识节点1将交易数据打包成区块1,在区块1完成共识过程后,可以根据节点委员会列表中共识节点的排列顺序确定生成下一个区块(如区块2)的共识节点为共识节点2。
当前共识节点可以执行第一提案中所包含的交易区块中的交易数据,得到交易数据对应的交易结果,根据第一提案对应的区块生成节点、节点委员会列表以及交易结果,确定在第一共识阶段中当前共识节点针对第一提案的第一本地投票信息;其中,该交易结果是指当前共识节点根据每笔交易数据所包含的交易发起方、交易接收方以及交易内容执行之后所得到的结果,如交易数据中的交易发起方为账户a,交易接收方为账户b,交易内容为:从账户a中转移10个游戏币至账户b,当前共识节点可以根据交易内容执行该交易数据,得到该交易数据执行之后的交易结果;若该交易结果为:账户a减少10个游戏币,账户b增加10个游戏币,则可以确定该交易结果为有效结果;若该交易结果为账户a余额不足,账户a和账户b中的游戏币未发生变化,则可以确定该交易结果为无效结果。
进一步地,在当前共识节点检测到区块生成节点属于节点委员会列表,且交易结果为有效结果时,可以确定第一提案在第一共识阶段中的验证结果为:验证通过结果,根据验证通过结果生成当前共识节点对应的第一本地投票信息为:赞成投票信息;在当前共识节点检测到区块生成节点不属于节点委员会列表,或者交易结果为无效结果时,可以确定第一提案在第一共识阶段中的验证结果为:验证未通过结果,根据验证未通过结果生成当前共识节点对应的第一本地投票信息为:反对投票信息。可选的,当前共识节点对第二区块的验证过程除了检测区块生成节点和交易数据执行后的交易结果之外,还可以检测第一提案中的签名信息的有效性、默克尔树根的有效性、第一提案中所包含的交易区块容量的有效性(如交易区块的容量小于区块链网络中区块容量的上限时,可以确定交易区块的容量为有效容量;交易区块的容量大于区块链网络中区块容量的上限时,可以确定交易区块的容量为无效容量)等;当上述区块生成节点属于节点委员会列表,且交易结果、签名信息、默克尔树根以及交易区块的容量等信息均有效时,当前共识节点可以确定第一提案在第一共识阶段中的验证结果为验证通过结果;当区块生成节点不属于节点委员会列表,或者交易结果、签名信息、默克尔树根以及交易区块的容量等信息中存在无效信息时,当前共识节点可以确定第一提案在第一共识阶段中的验证结果为验证未通过结果。
当前共识节点在第一共识阶段中得到第一提案对应的第一本地投票信息后,可以将第一本地投票信息在区块链网络中进行广播,以使区块链网络中除当前共识节点之外的其余共识节点均可以获取该第一本地投票信息。可以理解的是,区块链网络中除当前共识节点之外的其余共识节点均可以获取第一提案,并对第一提案进行共识验证,得到第一提案在第一共识阶段中的第一共识阶段投票信息,每个共识节点均可以将自身得到的第一共识阶段投票信息进行广播,即区块链网络中的任一共识节点均可以获取到所有共识节点在第一共识阶段中针对第一提案的第一共识阶段投票信息。其中,第一共识阶段投票信息可以为针对第一提案的赞成投票信息,或者为针对第一提案的反对投票信息,当前共识节点在获取到至少两个共识节点(此处的至少两个共识节点是指区块链网络中除了当前共识节点之外的其余共识节点)在第一共识阶段分别广播的针对第一提案的第一共识阶段投票信息后,可以对第一共识阶段投票信息和第一本地投票信息中所包含的赞成投票信息进行统计,得到第一提案在第一共识阶段中的第一赞成投票数。
可选的,当前共识节点在获取到至少两个共识节点分别发送的针对第一提案的第一共识阶段投票信息后,可以对所接收到的第一投票信息进行有效性验证,若第一共识阶段投票信息满足区块链网络中的投票合法条件,则将第一共识阶段投票信息添加至投票信息集合,当前共识节点可以将第一本地投票信息添加至投票信息集合,获取该投票信息集合中赞成投票信息的总数量,确定为第一提案在第一共识阶段中的第一赞成投票数,即当前共识节点可以对投票信息集合中所包含的投票信息进行统计,得到投票信息集合中赞成投票信息的总数量,即在第一共识阶段中确定该第一提案通过共识验证的节点数量。需要说明的是,第一本地投票信息为当前共识节点进行共识验证之后所生成的投票信息,对于当前共识节点而言,第一本地投票信息为满足投票合法条件的投票信息。
其中,投票信息集合包括区块链网络中共识节点在第一共识阶段中针对第一提案的有效投票信息,即满足投票合法条件的第一共识阶段投票信息方可添加至投票信息集合,不满足投票合法条件的第一共识阶段投票信息可以直接删除。区块链网络中的投票合法条件可以包括第一共识阶段投票信息对应的发送节点属于节点委员会列表、第一共识阶段投票信息所携带的签名信息为正确的签名、第一共识阶段投票信息为该发送节点的首次投票信息以及第一共识阶段投票信息的接收时间属于消息时间窗口(如提案在区块链网络中进行广播后的30分钟,或者一个小时等)等条件中的至少一个。当投票合法条件仅包含一个条件时,当前共识节点需要检测第一共识阶段投票信息是否满足该条件,满足该条件则表示满足投票合法条件,不满足该条件则表示不满足投票合法条件;当投票合法条件包含多个条件时,当前共识节点需要检测第一共识阶段投票信息是否满足多个条件,多个条件均满足则表示该第一共识阶段投票信息满足投票合法条件,多个条件中存在任一条件不满足则表示该第一共识阶段投票信息不满足投票合法条件。例如,投票合法条件仅包含条件A,在第一共识阶段投票信息满足条件A时可以确定该第一共识阶段投票信息满足投票合法条件,在第一共识阶段投票信息不满足条件A时可以确定该第一共识阶段投票信息不满足投票合法条件;投票合法条件包含条件A、条件B以及条件C,在第一共识阶段投票信息同时满足条件A、条件B以及条件C时,可以确定该第一共识阶段投票信息满足投票合法条件,在条件A、条件B以及条件C中存在任意一个不满足时,可以确定该第一共识阶段投票信息不满足投票合法条件。
可选的,当投票合法条件为第一共识阶段投票信息是发送节点的首次投票信息时,当前共识节点每接收到一个第一共识阶段投票信息,均可以获取每个第一共识阶段投票信息所对应的发送节点,若第一共识阶段投票信息为发送节点在第一共识阶段中针对第一提案的首次投票信息,则可以确定该第一共识阶段投票信息满足投票合法条件,可以将第一共识阶段投票信息添加至投票信息集合;若第一共识阶段投票信息为发送节点在第一共识阶段中针对第一提案的二次投票,则可以确定该第一共识阶段投票信息不满足投票合法条件,可以删除该第一共识阶段投票信息。需要说明的是,区块链网络中的每个共识节点在同一个共识阶段中可以对同一个提案进行一次投票,在共识节点完成对提案的首次投票后,该共识节点后续对该提案的投票均为无效投票。例如,当前共识节点在接收到第一共识阶段投票信息1后,获取到第一共识阶段投票信息1对应的发送节点为共识节点A,若当前共识节点在接收该第一共识阶段投票信息1之前,已经接收到共识节点A在第一共识阶段中所广播的针对第一提案的第一共识阶段投票信息2,则可以确定第一共识阶段投票信息1为无效投票信息,进而删除第一共识阶段投票信息1。
可选的,区块链网络中提案的共识过程是具有时间限制的,对于每个共识阶段中共识节点投票信息的接收时间范围可以进行预先设置,如为投票信息设置一个消息时间窗口。当投票合法条件为第一共识阶段投票信息的接收时间属于消息时间窗口时,当前共识节点在接收到第一共识阶段投票信息后,可以记录该第一共识阶段投票信息对应的接收时间,若该接收时间属于区块链网络中预先设置的消息时间窗口,则可以确定该第一共识阶段投票信息满足投票合法条件,可以将该第一共识阶段投票信息添加至投票信息集合;若该接收时间超过消息时间窗口,则可以确定该第一共识阶段投票信息不满足投票合法条件,可以删除该第一共识阶段投票信息。例如,第一提案在第一共识阶段中的消息时间窗口为:8:30-9:00,当前共识节点接收到第一共识阶段投票信息的时间在8:30-9:00范围内时,可以确定该第一共识阶段投票信息满足投票合法条件;当前共识节点接收到第一共识阶段投票信息的时间不处于8:30-9:00范围时,可以确定该第一共识阶段投票信息不满足投票合法条件。
可选的,当投票合法条件为第一共识阶段投票信息所携带的签名信息为正确签名时,当前共识节点在接收到第一共识阶段投票信息后,可以获取该第一共识阶段投票信息中所携带的签名信息,并根据该发送节点的公钥对第一共识阶段投票信息进行验签,如使用该发送节点的公钥对第一共识阶段投票信息所携带的签名信息进行解密,得到该第一共识阶段投票信息对应的第一摘要信息(如第一哈希值,该第一摘要信息是发送节点使用哈希算法计算得到的),当期共识节点可以使用与发送节点相同的哈希算法对实际接收到的第一共识阶段投票信息进行哈希运算,得到第二摘要信息,当第一摘要信息和第二摘要信息不相同时,表示第一共识阶段投票信息验签未通过,即第一共识阶段投票信息所携带的签名信息是错误的,该第一共识阶段投票信息不满足投票合法条件;当第一摘要信息和第二摘要信息相同时,表示第一共识阶段投票信息验签通过,即第一共识阶段投票信息所携带的签名信息是正确的,该第一共识阶段投票信息满足投票合法条件。
可选的,当投票合法条件为第一共识阶段投票信息对应的发送节点属于节点委员会列表时,当前共识节点在接收到第一共识阶段投票信息后,可以获取该第一共识阶段投票信息的发送节点,并获取区块链网络中的节点委员会列表,当发送节点不属于节点委员会列表时,表示该第一共识阶段投票信息不满足投票合法条件,即该发送节点所发送的第一共识阶段投票信息为无效投票信息;当发送节点属于节点委员会列表时,表示该第一共识阶段投票信息满足投票合法条件,即该发送节点所发送的第一共识阶段投票信息为有效投票信息。应当理解,节点委员会列表中所包含的共识节点可以执行区块链网络中的共识过程,节点委员会列表之外的区块链节点不具备对第一提案进行投票的权限,因此节点委员会列表之外的区块链节点所发送的投票信息均为无效投票信息。
请一并参见图4,是本申请实施例提供的一种投票信息的验证过程示意图。投票合法条件包括多个条件时,如图4所示,在提案的第一共识阶段中,共识节点21a将第一共识阶段中针对提案的第一共识阶段投票信息1广播给共识节点21b(此时的共识节点21b可以称为当前共识节点),共识节点21b可以对所接收的第一共识阶段投票信息1进行有效性验证,有效性验证可以包括第一共识阶段投票信息1对应的发送节点是否存在于节点委员会列表中,第一共识阶段投票信息1所携带的签名是否为发送节点的签名,第一共识阶段投票信息1是否为第一共识阶段中针对提案的第一次投票,第一共识阶段投票信息1的接收时间是否属于消息时间窗口等,当第一共识阶段投票信息1对应的发送节点存在于节点委员会列表中,且第一共识阶段投票信息1所携带的签名为发送节点的签名,且第一共识阶段投票信息1为发送节点在第一共识阶段中针对提案的第一次投票,且第一共识阶段投票信息1的接收时间属于消息时间窗口时,可以确定第一共识阶段投票信息1满足投票合法条件,即第一共识阶段投票信息1为有效投票信息,进而可以将第一共识阶段投票信息1添加至投票信息集合,该投票信息集合可以包括共识节点21b在第一共识阶段中所接收到的所有有效投票信息。
步骤S102,若第一赞成投票数大于或等于数量阈值,则根据第一赞成投票数确定第二本地投票信息。
具体的,当前共识节点在获取到第一提案在第一共识阶段中的第一赞成投票数后,可以根据第一赞成投票数生成第一提案对应的第二本地投票信息,该第二本地投票信息可以是指当前共识节点进入第二共识阶段根据第一赞成投票数所生成的投票信息。若第一赞成投票数大于或等于数量阈值(该数量阈值与区块链网络中所采用的共识算法相关联,如有些共识算法中该数量阈值可以是指区块链网络中共识节点数量的2/3,有些共识算法中该数量阈值可以是指区块链网络中共识节点数量的51%),则表示当前共识节点统计得出:区块链网络中存在超过数量阈值的共识节点通过了第一提案的共识验证,根据第一赞成投票数确定第二本地投票信息为投票成功结果;若第一赞成投票数小于数量阈值,则表示当前共识节点统计得出:区块链网络中仅有少于数量阈值的共识节点通过了第一提案的共识验证,根据第一赞成投票数确定第二本地投票信息为投票失败结果。
可选的,若第一投票赞成数大于或等于数量阈值,则当前共识节点可以根据第一本地投票信息和第一共识阶段投票信息生成第一投票参照表,进而可以根据第一赞成投票数和第一投票参照表确定第二本地投票信息为投票成功结果;其中,第一投票参照表可以包括当前共识节点所获取的满足投票合法条件的第一共识阶段投票信息和第一本地投票信息,该第一投票参照表还可以包括第一共识阶段投票信息对应的发送节点,以及第一本地投票信息对应的当前共识节点,并标记第一共识阶段投票信息和第一本地投票信息为赞成投票信息还是反对投票信息等。换言之,在第一赞成投票数大于或等于数量阈值时,当前共识节点可以根据所获得的有效投票信息(包括第一本地投票信息和满足投票合法条件的第一共识阶段投票信息)生成第一投票参照表,进而根据第一赞成投票数和第一投票参照表生成第二本地投票信息;区块链网络中的其余共识节点在获取到第二本地投票信息后,根据第二本地投票信息中的第一投票参照表就可以得知当前共识节点接收到的第一共识阶段投票信息的数量,接收到了哪些共识节点所广播的第一共识阶段投票信息等信息。
步骤S103,在第二共识阶段中,将第二本地投票信息广播至上述至少两个共识节点,根据第二本地投票信息和至少两个共识节点针对第一提案的第二共识阶段投票信息,获取第二赞成投票数;第一共识阶段和第二共识阶段均属于第一提案的共识周期,第一共识阶段早于第二共识阶段。
具体的,当前共识节点在生成第二本地投票信息后,可以在第二共识阶段中将第二本地投票信息在区块链网络中进行广播,以使区块链网络中的至少两个共识节点均可以获取该第二本地投票信息。可以理解的是,区块链网络中的每个共识节点均可以根据自身所获得的第一共识阶段中的投票信息,生成第二共识阶段中自身针对第一提案的第二共识阶段投票信息,每个共识节点均可以将自身生成的第二共识阶段投票信息进行广播,即区块链网络中的任一共识节点均可以获取到所有共识节点在第二共识阶段中针对第一提案的第二共识阶段投票信息,其中,第二共识阶段投票信息可以为针对第一提案的投票成功结果,或者为针对第一提案的投票失败结果,当前共识节点在获取到至少两个共识节点分别广播的针对第一提案的第二共识阶段投票信息后,可以第二本地投票信息和第二共识阶段投票信息中所包含的投票成功结果进行统计,得到第一提案在第二共识阶段中的第二赞成投票数。
需要说明的是,本申请实施例中的第一共识阶段和第二共识阶段均属于第一提案的共识周期,第一共识阶段早于第二共识阶段。区块链网络中的所有共识节点对某提案的完整共识过程可以称为一个共识周期,每个共识周期均可以包括两个共识阶段,在共识周期内达成共识的区块方可进行正式上链。在区块链网络中的共识节点完成对某提案的共识过程时,表示区块链网络中完成了一个共识周期,当区块链网络中的区块链节点生成新的提案后,可以进入下一个共识周期。
可选的,第二本地投票信息可以包括第一投票参照表,在第二共识阶段中,当前共识节点可以将第二本地投票信息在区块链网络中进行广播,以使区块链网络中的至少两个共识节点对第二本地投票信息中所包含的第一投票参照表进行验证,至少两个共识节点可以根据验证通过后的第一投票参照表确定第一提案的共识结果,当前共识结果可以获取至少两个共识节点分别发送的针对第一提案的第二共识阶段投票信息,根据第二共识阶段投票信息和第二本地投票信息中的投票成功结果,确定第一提案对应的第二共识赞成投票数。换言之,当前共识节点通过统计所接收到的第二共识阶段投票信息和第二本地投票信息中所包含的投票成功结果的数量,得到第一提案在第二共识阶段中的第二赞成投票数。可以理解的是,当前共识节点在接收到至少两个共识节点分别发送的第二共识阶段投票信息之后,可以对第二共识阶段投票信息进行有效性验证,从第二本地投票信息和通过有效性验证的第二共识阶段投票信息中统计第二赞成投票数。其中,第二共识阶段投票信息的有效性验证包括但不限于:验证第二共识阶段投票信息所携带的签名信息的正确性,验证第二共识阶段投票信息的发送节点,根据第二共识阶段投票信息所携带的投票参照表验证该第二共识阶段投票信息的正确性(如根据第二共识阶段投票信息所携带的投票参照表,重新统计第一赞成投票数,进而根据重新统计的第一赞成投票数确定该第二共识阶段投票信息的正确性)。
可选的,当前共识节点所接收的第二共识阶段投票信息中可以包括第二投票参照表,每个第二共识阶段投票信息中均可以携带一个第二投票参照表,此处的第二投票参照表是指除当前共识节点之外的其余共识节点所生成的投票参照表,上述提及的第一投票参照表是指当前共识节点所生成的投票参照表。当前共识节点可以根据第一投票参照表和第二投票参照表,统计区块链网络中每个共识节点分别对应的未投票次数,将未投票次数大于异常次数阈值(如区块链网络中共识节点数量的1/3等)的共识节点确定为异常共识节点,可以从区块链网络的节点委员会列表中删除该异常共识节点。应当理解的是,在第一提案的共识过程中,可能会由于区块链网络中的时延、断网等原因,当前共识节点可能不会接收到所有共识节点分别对应的第一共识阶段投票信息,即第一投票参照表中可能不会包含所有共识节点分别对应的第一共识阶段投票信息,因此可以根据第一投票参照表可以确定当前共识节点未接收到哪些共识节点的第一共识阶段投票信息,同理,第二投票参照表可以确定除当前共识节点之外的其余至少两个共识节点未接收到哪些共识节点的第一共识阶段投票信息,通过对第一投票参照表和第二投票参照表进行统计分析,对同一个共识节点的第一共识阶段投票信息的未接收次数进行统计,得到每个共识节点分别对应的未投票次数;当前共识节点可以根据未投票次数来确定共识节点是否为异常共识节点,未投票信息大于异常次数阈值的共识节点可以确定为异常共识节点,可以从节点委员会列表中删除该异常共识节点;未投票信息小于或等于异常次数阈值的共识节点可以确定为正常共识节点。举例来说,第一投票参照表中不存在共识节点1对应的第一共识阶段投票信息,则可以统计共识节点1对应的未投票次数为1,第二投票参照表1中不存在共识节点1对应的第一共识阶段投票信息,可以将共识节点1对应的未投票次数更新为2,以此类推,根据第一投票参照表和所有第二投票参照表,可以统计得到共识节点1对应的最终未投票次数为m,当未投票次数m大于异常次数阈值n时,可以将共识节点1确定为异常共识节点;当未投票次数m小于或等于异常次数阈值n时,可以将共识节点1确定为正常共识节点。
请一并参见图5,是本申请实施例提供的一种确定异常共识节点的示意图。如图5所示,区块链网络中可以包括5个共识节点,分别为共识节点1,共识节点2、共识节点3、共识节点4以及共识节点5。当区块链节点将区块链网络中的交易数据打包成区块30b,并对包含区块30b的提案30a进行广播后,区块链网络中的所有共识节点均可以获取该提案30a,该提案30a除了包含区块30b之外,还可以包括区块30b的区块高度,区块30b对应的区块生成节点的签名等信息。共识节点1可以对所获取的提案30a进行共识验证(此时的共识节点1可以称为当前共识节点,对提案30a的共识验证过程可以参见上述步骤S101,这里不再赘述),得到共识节点1在第一共识阶段中针对提案30a的投票信息1;同理,区块链网络中的其余共识节点均可以对提案30a进行共识验证,得到各共识节点在第一共识阶段中针对提案30a的投票信息,如共识节点2对应的投票信息2,共识节点3对应的投票信息3等,每个共识节点均可以对自身得到的投票信息进行广播,即每个共识节点均可以获得其余共识节点对应的投票信息。在实际应用中,可能会由于一些客观原因(如时延、断网)造成共识节点并不能获取到其余所有共识节点的投票信息。
当共识节点1在第一共识阶段中接收到了其余所有共识节点分别对应的投票信息时,共识节点1可以根据所接收到的投票信息生成投票参照表1(此处默认共识节点1所接收到的投票信息均为有效投票信息,且有效投票信息中赞成投票信息的数量大于或等于数量阈值),该投票参照表1中可以包括共识节点1在第一共识阶段所接收到的所有投票信息,以及每个投票信息对应的共识节点,如投票参照表1可以包括投票信息1和共识节点1、投票信息2和共识节点2、投票信息3和共识节点3、投票信息4和共识节点4以及投票信息5和共识节点5;同理,其余共识节点可以根据自身所接收到的投票信息各自生成投票参照表,如共识节点2接收到了共识节点1对应的投票信息1、共识节点3对应的投票信息3、共识节点4对应的投票信息4以及共识节点5对应的投票信息5,共识节点2可以根据投票信息1、投票信息3、投票信息4以及投票信息5生成投票参照表2。每个共识节点均可以将自身所生成的投票参照表随着第二共识阶段中的投票信息进行广播。
当共识节点1接收到共识节点2对应的投票参照表2、共识节点3对应的投票参照表3、共识节点4对应的投票参照表4以及共识节点5对应的投票参照表5之后,可以统计每个共识节点分别对应的未投票次数,如5个共识节点分别对应的投票参照表中均包含投票信息1,即5个共识节点均获取到了投票信息1,可以确定共识节点1对应的未投票次数为:0;投票参照表3和投票参照表4中不包含投票信息2,即共识节点3和共识节点4未接收到共识节点2所广播的投票信息2,可以确定共识节点2对应的未投票次数为:2;投票参照表2中不包含投票信息3,即共识节点2未接收到共识节点3所广播的投票信息3,可以确定共识节点3对应的未投票次数为:1;以此类推,可以统计得到共识节点4和共识节点5所对应的未投票次数均为0。当异常次数阈值为公式节点数量的1/3时,可以确定共识节点2对应的未投票次数2大于异常次数阈值,则可以将共识节点2确定为异常共识节点,可以从区块链网络的节点委员会列表中删除该共识节点2,剩余的共识节点1、共识节点3、共识节点4以及共识节点5均为正常共识节点。
步骤S104,若第二赞成投票数小于数量阈值,则确定第一提案的共识结果为共识未通过结果,将第一提案中所包含的交易区块设置为锁定状态。
具体的,当前共识节点在获得第一提案在第二共识阶段中的第二赞成投票数后,可以根据第二赞成投票数确定第一提案的最终共识结果。若第二赞成投票数小于数量阈值,则可以确定第一提案的最终共识结果为共识未通过结果,将第一赞成投票数大于或等于数量阈值,且第二赞成投票数小于数量阈值的第一提案中的交易区块设置为锁定状态,具有锁定状态的交易区块暂时缓存在当前共识节点的本地数据库中,将第一赞成投票数和第二赞成投票数均小于数量阈值的第一提案从本地删除。
可选的,若第二赞成投票数大于或等于数量阈值,则可以确定第一提案的共识结果为共识通过结果,将第一提案中所包含的交易区块进行记账处理,即第一提案达成共识时,当前共识节点可以将第一提案中的交易区块写入区块链中进行数据存储。
可选的,当前共识节点可以在获得第一共识阶段中的第一赞成投票数,且第一赞成投票数大于或等于数量阈值时,将第一提案中的交易区块设置为锁定状态,若后续第二共识阶段中的第二赞成投票数大于或等于数量阈值,则将交易区块由锁定状态切换为释放状态,将具有释放状态的交易数据进行正式上链;若后续第二共识阶段中的第二赞成投票数小于数量阈值,则继续保持交易区块的锁定状态。
步骤S105,当获取到第二提案时,根据第二提案和具有锁定状态的交易区块,对第一提案重新进行共识处理。
具体的,当前共识节点的本地数据库中存储有具有锁定状态的交易区块,在当前共识节点获取到第二提案(该第二提案与第一提案是由不同的区块链节点生成的)时,可以获取第二提案中所包含的待共识区块,并获取待共识区块和交易区块分别对应的区块高度,若待共识区块的区块高度和交易区块的区块高度相同,则删除第二提案,对包含交易区块的第一提案重新进行共识处理,得到第一提案的更新共识结果。换言之,当待共识区块的区块高度和交易区块的区块高度相同时,表明待共识区块为切换区块链节点后所生成的与该交易区块具有相同区块高度的区块,当前共识节点可以删除新接收到的第二提案,在当前共识周期中重新对包含交易区块的第一提案进行共识处理,得到第一提案的更新共识结果,其中,重新对第一提案进行共识处理的过程可以参见上述步骤S101-步骤S104,这里不再赘述。
若待共识区块的区块高度与交易区块的区块高度不相同(此处可以是指待共识区块的区块高度大于交易区块的区块高度),则将交易区块的锁住状态切换为释放状态,对具有释放状态的交易区块进行记账处理,进而对第二提案进行共识处理,得到第二提案对应的提案共识结果。换言之,当待共识区块的区块高度大于交易区块的区块高度时,表明区块链网络中的其余共识节点(除当前共识节点之外)已将交易区块记录在区块链中,即其余共识节点已将交易区块进行了正式上链,可以确定当前共识节点的本地账本(即本地区块链)比其余共识节点的账本少记录了交易区块,因此,当前共识节点可以将交易区块对应的锁定状态切换为释放状态,将具有释放状态的交易区块确定为合法区块,并向其余共识节点发送消息以请求与交易区块相关联的同步信息,将合法区块和同步信息进行记账处理,即从其余共识节点处获取同步信息实现当前共识节点与其余共识节点之间的数据同步。当前共识节点在完成与其余共识节点之间的数据同步后,可以在当前共识周期内对第二提案进行共识处理,得到第二提案对应的提案共识结果。其中,第二提案的共识处理过程与第一提案的共识处理过程类似,具体实现方式可以参见上述步骤S101-步骤S104,这里不再赘述。
可选的,区块链网络中可以预先设置同一个区块可以进行共识过程的次数,如次数为2次时,若第二区块在第3次共识周期中的共识结果仍然是:第一赞成投票数大于或等于数量阈值,第二赞成投票数小于数量阈值,则可以删除第二区块。
请一并参见图6,是本申请提供的一种提案处理过程的示意图。如图6所示,区块链网络中的区块链节点可以将交易数据打包成待共识区块40c,并将包含待共识区块40c的提案40b(即第二提案)在区块链网络中进行广播,该提案40b可以包括但不限于:区块链节点所生成的待共识区块40c(此时的区块链节点为区块生成节点),区块生成节点的签名信息,区块生成节点的工作状态,待共识区块40c的区块高度a。
共识节点40a在接收到提案40b后,可以获取交易区块40d对应的区块高度b以及待共识区块40c对应的区块高度a,当待共识区块40c对应的区块高度a与交易区块40d对应的区块高度b相同时,共识节点40a可以删除上述提案40b,对包含交易区块40d的提案重新进行共识处理,通过第一共识阶段和第二共识阶段可以得到包含该交易区块40d的提案所对应的共识结果2,若共识结果2为共识通过结果,则可以将具有锁定状态的交易区块40d进行正式上链处理;若共识结果2为共识未通过结果,且第一共识阶段中的第一赞成投票数仍然大于或等于数量阈值,则仍然将交易区块40d设置为锁定状态,继续缓存在本地数据库中。
当待共识区块40c对应的区块高度a与交易区块40d对应的区块高度b不相同(如区块高度a大于区块高度b)时,可以表明区块链网络中除共识节点40a之外的其余共识节点已经在前一共识周期确定交易区块40d达成共识,已将交易区块40d写入区块链中,共识节点40a可能由于时延或断网的原因未接收到所有共识节点对应的投票信息,将交易区块40d确定为未达成共识,未将交易区块40d正式写入区块链中。因此,共识节点40a可以将本地数据库中交易区块40d确定为合法区块,并从区块链网络的其余共识节点处获取同步信息,对合法区块和同步信息进行正式上链处理,进而实现共识节点40a和其余共识节点之间数据同步过程。随后,共识节点40a可以对提案40b进行共识处理,通过两个共识阶段得到提案40b的共识结果1,若共识结果2为共识通过结果,则可以将具有锁定状态的交易区块40d进行正式上链处理;若共识结果1为共识未通过结果,且第一共识阶段中提案40b的第一赞成投票数大于或等于数量阈值,则将待共识区块40c设置为锁定状态,将具有锁定状态的待共识区块40c缓存在本地数据库中。
请参见图7,是本申请实施例提供的一种投票信息处理流程图。如图7所示,投票消息的处理过程可以参见下述步骤S1-步骤S7:
步骤S1,当前共识节点在接收到其余共识节点(除当前共识节点之外的共识节点)所广播的第一共识阶段投票信息后,可以对所接收的第一共识阶段投票信息进行有效性验证(具体的验证过程可以参见上述图3所对应实施例中的步骤S101),若第一共识阶段投票信息未通过有效性验证,则可以删除该第一共识阶段投票信息;若第一共识阶段投票信息通过有效性验证,可以继续执行步骤S2。
步骤S2,若第一共识阶段投票信息通过有效性验证,则表示该第一共识阶段投票信息为有效投票信息,可以将有效投票信息添加至当前共识节点的本地数据库中。
步骤S3,当前共识节点在接收到区块链网络中其余共识节点分别对应的第一共识阶段投票信息,并对所接收到的第一共识阶段投票信息进行有效性验证之后,可以从本地数据库中统计第一共识阶段投票信息和第一本地投票信息(即当前共识节点在第一共识阶段中对提案的投票信息)中的第一赞成投票数,即本地数据库中所包含的赞成投票信息的总数量;当前共识节点可以将第一赞成投票数与共识节点数量的2/3(即共识过程中的数量阈值)进行比较,若第一赞成投票数达到共识节点数量的2/3,则继续执行步骤S4;若第一赞成投票数未达到共识节点数量的2/3,则继续执行步骤S5。
步骤S4,若第一赞成投票数达到共识节点数量的2/3,则当前共识节点可以锁住提案中的区块1,并根据本地数据库中所包含的第一共识阶段投票信息和第一本地投票信息生成投票参照表,根据第一赞成投票数和投票参照表生成第二本地投票信息,在区块链网络中对第二本地投票信息进行广播,此时的第二本地投票信息为投票成功结果。
步骤S5,若第一赞成投票数未达到共识节点数量的2/3,则当前共识节点可以根据第一赞成投票数生成第二本地投票信息,在区块链网络中对第二本地投票信息进行广播,此时的第二本地投票信息为投票失败结果。其中,步骤S1-步骤S5表示提案在第一共识阶段中的处理过程。
步骤S6,当前共识节点可以获取其余共识节点所广播的提案在第二共识阶段中第二共识阶段投票信息,在获取到第二共识阶段投票信息后,可以对所接收的第二共识阶段投票信息进行有效性验证,若第二共识阶段投票信息未通过有效性验证,则可以删除该第二共识阶段投票信息;若第二共识阶段投票信息通过有效性验证,可以继续执行步骤S7。
步骤S7,在当前共识节点接收到其余共识节点分别对应的第二共识阶段投票信息,并对所接收到的第二共识阶段投票信息进行有效性验证之后,可以从通过有效性验证的第二共识阶段投票信息中统计提案在第二共识阶段中的第二赞成投票数,若第二赞成投票数达到共识节点数量的2/3,则表示提案通过共识,可以将提案中的区块1进行正式上链;若第二赞成投票数未达到共识节点数量的2/3,则表示提案未通过共识。
在本申请实施例中,区块链网络中提案的共识过程可以包括两个共识阶段,当提案在第一共识阶段中达成共识,且在第二共识阶段中未达成共识,即第一赞成投票数大于或等于数量阈值,且第二赞成投票数小于数量阈值时,该提案未达成最终共识,此时可以将该提案中的交易区块设置为锁定状态并进行缓存,在下一共识周期中可以重新对包含该交易区块的提案进行共识处理,进而可以提高区块链网络中区块的上链成功率;在提案的第二共识阶段中引入投票参照表,根据投票参照表可以对共识节点所发送的投票信息进行验证,还可以确定共识节点的异常情况,可以提高区块链网络中提案的共识准确率。
请参见图8,是本申请实施例提供的一种投票信息处理装置的结构示意图。该投票信息处理装置可以是运行于计算机设备中的一个计算机程序(包括程序代码),例如该投票信息处理装置为一个应用软件;该装置可以用于执行本申请实施例提供的方法中的相应步骤。如图8所示,该投票信息处理装置1可以包括:第一获取模块11,确定模块12,第二获取模块13,状态设置模块14,共识处理模块15;
第一获取模块11,用于获取至少两个共识节点在第一共识阶段分别发送的针对第一提案的第一共识阶段投票信息,根据第一提案的第一本地投票信息和第一共识阶段投票信息获取第一赞成投票数;
确定模块12,用于若第一赞成投票数大于或等于数量阈值,则根据第一赞成投票数确定第二本地投票信息;
第二获取模块13,用于在第二共识阶段中,将第二本地投票信息广播至上述至少两个共识节点,根据第二本地投票信息和至少两个共识节点针对第一提案的第二共识阶段投票信息,获取第二赞成投票数;第一共识阶段和第二共识阶段均属于第一提案的共识周期,第一共识阶段早于第二共识阶段;
状态设置模块14,用于若第二赞成投票数小于数量阈值,则确定第一提案的共识结果为共识未通过结果,将第一提案中所包含的交易数据设置为锁定状态;
共识处理模块15,用于当获取到第二提案时,根据第二提案和具有锁定状态的交易区块,对第一提案重新进行共识处理。
其中,第一获取模块11,确定模块12,第二获取模块13,状态设置模块14,共识处理模块15的具体功能实现方式可以参见上述图3所对应实施例中的步骤S101-步骤S105,这里不再进行赘述。
请一并参见图8,该投票信息处理装置1还可以包括:提案获取模块16,交易执行模块17,第一本地投票模块18;
提案获取模块16,用于获取所述第一提案,获取所述第一提案对应的提案生成节点,从所述区块链网络中获取节点委员会列表;所述节点委员会列表包括所述区块链网络中处于有效工作状态的共识节点;
交易执行模块17,用于执行所述第一提案所包含的所述交易区块中的交易数据,得到所述交易数据对应的交易结果;
第一本地投票模块18,用于根据所述提案生成节点、所述节点委员会节点列表以及所述交易结果,确定所述第一共识阶段中当前共识节点针对所述第一提案的第一本地投票信息。
其中,提案获取模块16,交易执行模块17,第一本地投票模块18的具体功能实现方式可以参见上述图3所对应实施例中的步骤S101,这里不再进行赘述。
请一并参见图8,第一获取模块11可以包括:投票信息获取单元111,添加单元112,统计单元113;
投票信息获取单元111,用于获取所述至少两个共识节点在所述第一共识阶段分别发送的针对所述第一提案的第一共识阶段投票信息;
添加单元112,用于若所述第一共识阶段投票信息满足区块链网络中的投票合法条件,则将所述第一共识阶段投票信息添加至投票信息集合;
统计单元113,用于将所述第一本地投票信息添加至所述投票信息集合,获取所述投票信息集合中赞成投票信息的总数量,确定为所述第一提案对应的第一赞成投票数。
其中,投票信息获取单元111,添加单元112,统计单元113的具体功能实现方式可以参见上述图3所对应实施例中的步骤S101,这里不再进行赘述。
请一并参见图8,该投票信息处理装置1还可以包括:第一验证模块19,第二验证模块20,第二本地投票模块21,记账模块24;
第一验证模块19,用于获取所述第一共识阶段投票信息对应的发送节点,若所述第一共识阶段投票信息为所述发送节点在所述第一共识阶段中针对所述第一提案的首次投票信息,则确定所述第一共识阶段投票信息满足所述投票合法条件。
第二验证模块20,用于获取所述第一共识阶段投票信息对应的接收时间,若所述接收时间属于所述区块链网络中的消息时间窗口,则确定所述第一共识阶段投票信息满足所述投票合法条件。
第二本地投票模块21,用于若所述第一赞成投票数小于数量阈值,则根据所述第一赞成投票数确定所述第二本地投票信息为投票失败结果。
记账模块24,用于若所述第二赞成投票数大于或等于所述数量阈值,则确定所述第一提案对应的共识结果为共识通过结果,将所述第一提案中所包含的交易区块进行记账处理。
其中,第一验证模块19,第二验证模块20的具体功能实现方式可以参见上述图3所对应实施例中的步骤S101,第二本地投票模块21的具体功能实现方式可以参见上述图3所对应实施例中的步骤S102,记账模块24的具体功能实现方式可以参见上述图3所对应实施例中的步骤S104,这里不再进行赘述。
请一并参见图8,确定模块12可以包括:参照表生成单元121,本地投票信息确定单元122;
参照表生成单元121,用于若所述第一赞成投票数大于或等于数量阈值,则根据所述第一本地投票信息与所述第一共识阶段投票信息生成第一投票参照表;
本地投票信息确定单元122,用于根据所述第一赞成投票数和所述第一投票参照表确定所述第二本地投票信息为投票成功结果;所述第一投票参照表包括当前共识节点所获取的满足投票合法条件的第一共识阶段投票信息。
其中,参照表生成单元121,本地投票信息确定单元122的具体功能实现方式可以参见上述图3所对应实施例中的步骤S102,这里不再进行赘述。
请一并参见图8,第二获取模块13可以包括:广播单元131,投票数确定单元132;
广播单元131,用于在所述第二共识阶段中,将所述第二本地投票信息在区块链网络中进行广播,以使所述至少两个共识节点对所述第二本地投票信息中所包含的所述第一投票参照表进行验证,并根据验证通过后的第一投票参照表确定所述第一提案的共识结果;
投票数确定单元132,用于获取所述至少两个共识节点分别发送的针对所述第一提案的第二共识阶段投票信息,根据所述第二共识阶段投票信息和所述第二本地投票信息中的投票成功结果,确定所述第一提案对应的第二赞成投票数。
其中,广播单元131,投票数确定单元132的具体功能实现方式可以参见上述图3所对应实施例中的步骤S103,这里不再进行赘述。
请一并参见图8,上述第二共识阶段投票信息包括第二投票参照表,该投票信息处理装置1还可以包括:次数统计模块22,异常节点确定模块23;
次数统计模块22,用于根据所述第一投票参照表和所述第二投票参照表,统计所述区块链网络中每个共识节点分别对应的未投票次数;
异常节点确定模块23,用于将所述未投票次数大于异常次数阈值的共识节点确定为异常共识节点,从所述区块链网络的节点委员会列表中删除所述异常共识节点。
其中,次数统计模块22,异常节点确定模块23的具体功能实现方式可以参见上述图3所对应实施例中的步骤S103,这里不再进行赘述。
请一并参见图8,共识处理模块15可以包括:区块获取单元151,重新共识单元152,区块释放模块153;
区块获取单元151,用于获取所述第二提案中所包含的待共识区块;
重新共识单元152,用于若所述待共识区块的区块高度和所述交易区块的区块高度相同,则删除所述第二提案,对包含所述交易区块的所述第一提案重新进行共识处理,得到所述第一提案的更新共识结果;
区块释放模块153,用于若所述待共识区块的区块高度和所述交易区块的区块高度不相同,则将所述锁住状态切换为释放状态,对具有所述释放状态的交易区块进行记账处理,对所述第二提案进行共识处理,得到所述第二提案对应的提案共识结果。
其中,区块获取单元151,重新共识单元152,区块释放模块153的具体功能实现方式可以参见上述图3所对应实施例中的步骤S105,这里不再进行赘述。
在本申请实施例中,区块链网络中提案的共识过程可以包括两个共识阶段,当提案在第一共识阶段中达成共识,且在第二共识阶段中未达成共识,即第一赞成投票数大于或等于数量阈值,且第二赞成投票数小于数量阈值时,该提案未达成最终共识,此时可以将该提案中的交易区块设置为锁定状态并进行缓存,在下一共识周期中可以重新对包含该交易区块的提案进行共识处理,进而可以提高区块链网络中区块的上链成功率;在提案的第二共识阶段中引入投票参照表,根据投票参照表可以对共识节点所发送的投票信息进行验证,还可以确定共识节点的异常情况,可以提高区块链网络中提案的共识准确率。
请参见图9,是本申请实施例提供的一种计算机设备的结构示意图。如图9所示,该计算机设备1000可以包括:处理器1001,网络接口1004和存储器1005,此外,上述计算机设备1000还可以包括:用户接口1003,和至少一个通信总线1002。其中,通信总线1002用于实现这些组件之间的连接通信。其中,用户接口1003可以包括显示屏(Display)、键盘(Keyboard),可选用户接口1003还可以包括标准的有线接口、无线接口。网络接口1004可选的可以包括标准的有线接口、无线接口(如WI-FI接口)。存储器1004可以是高速RAM存储器,也可以是非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器。存储器1005可选的还可以是至少一个位于远离前述处理器1001的存储装置。如图9所示,作为一种计算机可读存储介质的存储器1005中可以包括操作系统、网络通信模块、用户接口模块以及设备控制应用程序。
在如图9所示的计算机设备1000中,网络接口1004可提供网络通讯功能;而用户接口1003主要用于为用户提供输入的接口;而处理器1001可以用于调用存储器1005中存储的设备控制应用程序,以实现:
获取至少两个共识节点在第一共识阶段分别发送的针对第一提案的第一共识阶段投票信息,根据第一提案的第一本地投票信息和第一共识阶段投票信息获取第一赞成投票数;
若第一赞成投票数大于或等于数量阈值,则根据第一赞成投票数确定第二本地投票信息;
在第二共识阶段中,将第二本地投票信息广播至上述至少两个共识节点,根据第二本地投票信息和至少两个共识节点针对第一提案的第二共识阶段投票信息,获取第二赞成投票数;第一共识阶段和第二共识阶段均属于第一提案的共识周期,第一共识阶段早于第二共识阶段;
若第二赞成投票数小于数量阈值,则确定第一提案的共识结果为共识未通过结果,将第一提案中所包含的交易区块设置为锁定状态;
当获取到第二提案时,根据第二提案和具有锁定状态的交易区块,对第一提案重新进行共识处理。
应当理解,本申请实施例中所描述的计算机设备1000可执行前文图3所对应实施例中对投票信息处理方法的描述,也可执行前文图7所对应实施例中对投票信息处理装置1的描述,在此不再赘述。另外,对采用相同方法的有益效果描述,也不再进行赘述。
此外,这里需要指出的是:本申请实施例还提供了一种计算机可读存储介质,且计算机可读存储介质中存储有前文提及的投票信息处理装置1所执行的计算机程序,且计算机程序包括程序指令,当处理器执行程序指令时,能够执行前文图3所对应实施例中对投票信息处理方法的描述,因此,这里将不再进行赘述。另外,对采用相同方法的有益效果描述,也不再进行赘述。对于本申请所涉及的计算机可读存储介质实施例中未披露的技术细节,请参照本申请方法实施例的描述。作为示例,程序指令可被部署在一个计算设备上执行,或者在位于一个地点的多个计算设备上执行,又或者,在分布在多个地点且通过通信网络互连的多个计算设备上执行,分布在多个地点且通过通信网络互连的多个计算设备可以组成区块链网络。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,计算机程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,存储介质可为磁碟、光盘、只读存储存储器(Read-Only Memory,ROM)或随机存储存储器(Random Access Memory,RAM)等。
以上所揭露的仅为本申请较佳实施例而已,当然不能以此来限定本申请之权利范围,因此依本申请权利要求所作的等同变化,仍属本申请所涵盖的范围。
Claims (10)
1.一种投票信息处理方法,其特征在于,包括:
获取至少两个共识节点在第一共识阶段分别发送的针对第一提案的第一共识阶段投票信息,根据所述第一提案的第一本地投票信息和所述第一共识阶段投票信息获取第一赞成投票数;所述第一本地投票信息是当前共识节点基于所述第一提案所对应的提案生成节点、交易执行结果以及区块链网络中的节点委员会列表所确定的,所述节点委员会列表包括所述区块链网络中处于有效工作状态的共识节点;
若所述第一赞成投票数大于或等于数量阈值,则根据所述第一本地投票信息与所述第一共识阶段投票信息生成第一投票参照表,根据所述第一赞成投票数和所述第一投票参照表确定第二本地投票信息;所述第一投票参照表包括当前共识节点所获取的满足投票合法条件的第一共识阶段投票信息;
在第二共识阶段中,将所述第二本地投票信息广播至所述至少两个共识节点,根据所述第二本地投票信息和所述至少两个共识节点针对所述第一提案的第二共识阶段投票信息,获取第二赞成投票数;所述第一共识阶段和所述第二共识阶段均属于所述第一提案的共识周期,所述第一共识阶段早于所述第二共识阶段;
若所述第二赞成投票数小于所述数量阈值,则确定所述第一提案的共识结果为共识未通过结果,将所述第一提案中所包含的交易区块设置为锁定状态;
根据所述第一投票参照表和所述第二共识阶段投票信息中的第二投票参照表,统计所述区块链网络中每个共识节点分别对应的未投票次数;所述第二投票参照表是指所述区块链网络中除所述当前共识节点之外的其余共识节点,基于所获取到的第一共识阶段投票信息和第一本地投票信息所生成的投票参照表;
将所述未投票次数大于异常次数阈值的共识节点确定为异常共识节点,从所述区块链网络的节点委员会列表中删除所述异常共识节点;
当获取到第二提案时,根据所述第二提案和具有所述锁定状态的交易区块,对所述第一提案重新进行共识处理。
2.根据权利要求1所述的方法,其特征在于,所述获取至少两个共识节点在第一共识阶段发送的针对第一提案的第一共识阶段投票信息,根据所述第一提案的第一本地投票信息和所述第一共识阶段投票信息获取第一赞成投票数,包括:
获取所述至少两个共识节点在所述第一共识阶段分别发送的针对所述第一提案的第一共识阶段投票信息;
若所述第一共识阶段投票信息满足区块链网络中的投票合法条件,则将所述第一共识阶段投票信息添加至投票信息集合;
将所述第一本地投票信息添加至所述投票信息集合,获取所述投票信息集合中赞成投票信息的总数量,确定为所述第一提案对应的第一赞成投票数。
3.根据权利要求2所述的方法,其特征在于,还包括:
获取所述第一共识阶段投票信息对应的发送节点,若所述第一共识阶段投票信息为所述发送节点在所述第一共识阶段中针对所述第一提案的首次投票信息,则确定所述第一共识阶段投票信息满足所述投票合法条件。
4.根据权利要求2所述的方法,其特征在于,还包括:
获取所述第一共识阶段投票信息对应的接收时间,若所述接收时间属于所述区块链网络中的消息时间窗口,则确定所述第一共识阶段投票信息满足所述投票合法条件。
5.根据权利要求1所述的方法,其特征在于,还包括:
若所述第一赞成投票数小于数量阈值,则根据所述第一赞成投票数确定所述第二本地投票信息为投票失败结果。
6.根据权利要求1所述的方法,其特征在于,还包括:
若所述第二赞成投票数大于或等于所述数量阈值,则确定所述第一提案对应的共识结果为共识通过结果,将所述第一提案中所包含的交易区块进行记账处理。
7.根据权利要求1所述的方法,其特征在于,所述根据所述第二提案和具有所述锁住状态的交易区块,对所述第一提案重新进行共识处理,包括:
获取所述第二提案中所包含的待共识区块;
若所述待共识区块的区块高度和所述交易区块的区块高度相同,则删除所述第二提案,对包含所述交易区块的所述第一提案重新进行共识处理,得到所述第一提案的更新共识结果;
若所述待共识区块的区块高度和所述交易区块的区块高度不相同,则将所述锁住状态切换为释放状态,对具有所述释放状态的交易区块进行记账处理,对所述第二提案进行共识处理,得到所述第二提案对应的提案共识结果。
8.一种投票信息处理装置,其特征在于,包括:
第一获取模块,用于获取至少两个共识节点在第一共识阶段分别发送的针对第一提案的第一共识阶段投票信息,根据所述第一提案的第一本地投票信息和所述第一共识阶段投票信息获取第一赞成投票数;所述第一本地投票信息是当前共识节点基于所述第一提案所对应的提案生成节点、交易执行结果以及区块链网络中的节点委员会列表所确定的,所述节点委员会列表包括所述区块链网络中处于有效工作状态的共识节点;
确定模块,用于若所述第一赞成投票数大于或等于数量阈值,则根据所述第一本地投票信息与所述第一共识阶段投票信息生成第一投票参照表,根据所述第一赞成投票数和所述第一投票参照表确定第二本地投票信息;所述第一投票参照表包括当前共识节点所获取的满足投票合法条件的第一共识阶段投票信息;
第二获取模块,用于在第二共识阶段中,将所述第二本地投票信息广播至所述至少两个共识节点,根据所述第二本地投票信息和所述至少两个共识节点针对所述第一提案的第二共识阶段投票信息,获取第二赞成投票数;所述第一共识阶段和所述第二共识阶段均属于所述第一提案的共识周期,所述第一共识阶段早于所述第二共识阶段;
状态设置模块,用于若所述第二赞成投票数小于所述数量阈值,则确定所述第一提案的共识结果为共识未通过结果,将所述第一提案中所包含的交易数据设置为锁定状态;
次数统计模块,用于根据所述第一投票参照表和所述第二共识阶段投票信息中的第二投票参照表,统计所述区块链网络中每个共识节点分别对应的未投票次数;所述第二投票参照表是指所述区块链网络中除所述当前共识节点之外的其余共识节点,基于所获取到的第一共识阶段投票信息和第一本地投票信息所生成的投票参照表;
异常节点确定模块,用于将所述未投票次数大于异常次数阈值的共识节点确定为异常共识节点,从所述区块链网络的节点委员会列表中删除所述异常共识节点;
共识处理模块,用于当获取到第二提案时,根据所述第二提案和具有所述锁定状态的交易区块,对所述第一提案重新进行共识处理。
9.一种计算机设备,其特征在于,包括存储器和处理器,所述存储器存储有计算机程序,所述计算机程序被所述处理器执行时,使得所述处理器执行如权利要求1至7中任一项所述方法的步骤。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,所述计算机程序包括程序指令,所述程序指令当被处理器执行时,执行如权利要求1至7中任一项所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010483872.3A CN111654395B (zh) | 2020-06-01 | 2020-06-01 | 投票信息处理方法、装置、设备以及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010483872.3A CN111654395B (zh) | 2020-06-01 | 2020-06-01 | 投票信息处理方法、装置、设备以及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111654395A CN111654395A (zh) | 2020-09-11 |
CN111654395B true CN111654395B (zh) | 2021-10-26 |
Family
ID=72351126
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010483872.3A Active CN111654395B (zh) | 2020-06-01 | 2020-06-01 | 投票信息处理方法、装置、设备以及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111654395B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112182113A (zh) * | 2020-10-23 | 2021-01-05 | 网易(杭州)网络有限公司 | 区块链共识方法、系统、电子设备及存储介质 |
CN112511312B (zh) * | 2020-11-23 | 2023-10-17 | 北京微芯区块链与边缘计算研究院 | 一种可组装的共识方法及系统 |
CN112202933B (zh) * | 2020-12-08 | 2021-03-05 | 腾讯科技(深圳)有限公司 | 区块链网络的信息处理方法、装置及节点设备 |
CN112835854A (zh) * | 2021-02-01 | 2021-05-25 | 北京百度网讯科技有限公司 | 文件存储方法、装置、电子设备和存储介质 |
CN116488946B (zh) * | 2023-06-21 | 2023-09-15 | 积至网络(北京)有限公司 | 基于持续多模表决的恶意节点检测方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110246038A (zh) * | 2019-04-26 | 2019-09-17 | 众安信息技术服务有限公司 | 一种区块链交易快速确认方法及系统 |
CN110288479A (zh) * | 2019-06-28 | 2019-09-27 | 深圳市网心科技有限公司 | 一种区块链数据的共识方法及相关设备 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7590642B2 (en) * | 2002-05-10 | 2009-09-15 | Oracle International Corp. | Enhanced K-means clustering |
US9031897B2 (en) * | 2012-03-23 | 2015-05-12 | Nuance Communications, Inc. | Techniques for evaluation, building and/or retraining of a classification model |
CN108648078B (zh) * | 2018-05-02 | 2021-03-23 | 杭州溪塔科技有限公司 | 一种交易预处理方法、装置及电子设备 |
CN110995701B (zh) * | 2019-12-02 | 2022-11-29 | 远光软件股份有限公司 | 一种区块链共识方法、系统、电子设备、存储介质 |
CN111061769B (zh) * | 2019-12-24 | 2021-09-10 | 腾讯科技(深圳)有限公司 | 一种区块链系统的共识方法及相关设备 |
-
2020
- 2020-06-01 CN CN202010483872.3A patent/CN111654395B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110246038A (zh) * | 2019-04-26 | 2019-09-17 | 众安信息技术服务有限公司 | 一种区块链交易快速确认方法及系统 |
CN110288479A (zh) * | 2019-06-28 | 2019-09-27 | 深圳市网心科技有限公司 | 一种区块链数据的共识方法及相关设备 |
Also Published As
Publication number | Publication date |
---|---|
CN111654395A (zh) | 2020-09-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111382456B (zh) | 提案消息处理方法、装置、设备以及存储介质 | |
CN111654395B (zh) | 投票信息处理方法、装置、设备以及存储介质 | |
CN111427957B (zh) | 区块链投票信息校验方法、装置、设备以及存储介质 | |
CN113282603B (zh) | 区块链共识节点校验方法、装置、设备以及存储介质 | |
WO2021233049A1 (zh) | 基于区块链的数据处理方法、装置、设备及可读存储介质 | |
CN111445333B (zh) | 区块生成方法、装置、计算机设备以及存储介质 | |
US20220272105A1 (en) | Blockchain-based data detection method, apparatus, and computer-readable storage medium | |
CN110602217B (zh) | 基于区块链的联盟管理方法、装置、设备及存储介质 | |
CN111314067B (zh) | 区块存储方法、装置、计算机设备及存储介质 | |
US20230037932A1 (en) | Data processing method and apparatus based on blockchain network, and computer device | |
CN110177124A (zh) | 基于区块链的身份认证方法及相关设备 | |
CN111884807A (zh) | 基于区块链的物品预约方法、装置、设备以及介质 | |
CN113326516A (zh) | 区块链共识方法、区块链系统及计算机设备 | |
CN110930254A (zh) | 基于区块链的数据处理方法、装置、终端及介质 | |
CN108366176A (zh) | 一种终端应用的计费方法、装置及系统 | |
CN112448946A (zh) | 基于区块链的日志审计方法及装置 | |
US20220239668A1 (en) | Blockchain-based message processing method and apparatus, device, and storage medium | |
CN110647583B (zh) | 一种区块链构建方法、装置、终端及介质 | |
CN111327602B (zh) | 一种设备接入处理方法、设备及存储介质 | |
CN117061538A (zh) | 一种基于区块链网络的共识处理方法及相关装置 | |
CN112989398B (zh) | 区块链网络的数据处理方法、装置、计算机设备和介质 | |
CN115701078B (zh) | 跨链交易处理方法、装置、电子设备以及存储介质 | |
CN113301118B (zh) | 区块链共识节点的确定方法、共识方法、系统及设备 | |
CN116961892A (zh) | 基于区块链的密钥生成方法、装置、电子设备和可读介质 | |
CN117411609A (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: 40028477 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 |