CN111507840A - 区块链共识方法、装置、计算机以及可读存储介质 - Google Patents
区块链共识方法、装置、计算机以及可读存储介质 Download PDFInfo
- Publication number
- CN111507840A CN111507840A CN202010295981.2A CN202010295981A CN111507840A CN 111507840 A CN111507840 A CN 111507840A CN 202010295981 A CN202010295981 A CN 202010295981A CN 111507840 A CN111507840 A CN 111507840A
- Authority
- CN
- China
- Prior art keywords
- consensus
- stage
- block
- result
- local
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 89
- 238000004590 computer program Methods 0.000 claims description 13
- 230000003993 interaction Effects 0.000 claims description 8
- 230000008569 process Effects 0.000 description 38
- 238000010586 diagram Methods 0.000 description 19
- 238000012795 verification Methods 0.000 description 10
- 238000005192 partition Methods 0.000 description 5
- 238000012545 processing Methods 0.000 description 5
- 230000002159 abnormal effect Effects 0.000 description 4
- 230000006870 function Effects 0.000 description 4
- 230000009286 beneficial effect Effects 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000007792 addition Methods 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
Images
Classifications
-
- 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
-
- 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
- G06Q20/00—Payment architectures, schemes or protocols
- G06Q20/38—Payment protocols; Details thereof
- G06Q20/382—Payment protocols; Details thereof insuring higher security of transaction
Landscapes
- Engineering & Computer Science (AREA)
- Business, Economics & Management (AREA)
- Accounting & Taxation (AREA)
- Theoretical Computer Science (AREA)
- Finance (AREA)
- Computer Security & Cryptography (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- General Business, Economics & Management (AREA)
- Strategic Management (AREA)
- Economics (AREA)
- Technology Law (AREA)
- Marketing (AREA)
- Development Economics (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Computer Hardware Design (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Computer And Data Communications (AREA)
Abstract
本申请实施例公开了一种区块链共识方法、装置、计算机及可读存储介质,包括:在第一阶段共识周期内,获取至少两个共识节点发送的针对交易区块的第一阶段共识结果;根据针对交易区块的本地共识结果与第一阶段共识结果与第一阶段共识结果,确定第一阶段投票结果数量;若第一阶段投票结果数量小于第一数量阈值,则生成第二阶段本地空块;在第二阶段共识周期内,将第二阶段本地空块广播到至少两个共识节点,获取至少两个共识节点发送的第二阶段共识结果;根据第二阶段本地空块与第二阶段共识结果,确定交易区块的上链结果。采用本申请,可以提高区块链共识的效率。
Description
技术领域
本申请涉及区块链技术领域,尤其涉及一种区块链共识方法、装置、计算机以及可读存储介质。
背景技术
随着区块链技术的日益成熟,加上区块链的去中心化等的特性,使得区块链的应用日益广泛,其中,目前是通过区块链中的共识节点对获取到的交易区块进行共识,根据共识结果确定该交易区块的上链结果,以保障区块链数据的安全性。因此,为了更好地保障区块链的去中心化特性及区块链数据的安全性,对于区块链共识的管理也就成为及其重要的事。目前在区块链中,将一个交易区块进行上链时,区块链网络中的共识节点会对该交易区块进行共识,只有当该交易区块共识通过时,才会将该交易区块添加到区块链上,确定该交易区块的上链结果为上链成功结果,而在共识节点对交易区块进行共识的过程中,可能会出现异常情况(如网络因素等),使得无法确定该交易区块是否共识通过,即无法确定该交易区块的上链结果,从而导致针对该交易区块的共识过程中断,降低了区块链共识的效率。
发明内容
本申请实施例提供了一种区块链共识方法和装置,可以提高区块链共识的效率。
本申请实施例一方面提供了一种区块链共识方法,包括:
在第一阶段共识周期内,获取至少两个共识节点发送的针对交易区块的第一阶段共识结果;
根据针对上述交易区块的本地共识结果与上述第一阶段共识结果,确定第一阶段投票结果数量;
若上述第一阶段投票结果数量小于第一数量阈值,则生成第二阶段本地空块;上述第二阶段本地空块为交易数据为空的区块;
在第二阶段共识周期内,将上述第二阶段本地空块广播到上述至少两个共识节点,获取上述至少两个共识节点发送的第二阶段共识结果;上述第一阶段共识周期与上述第二阶段共识周期均属于针对上述交易区块的共识周期,上述第一阶段共识周期早于上述第二阶段共识周期;
根据上述第二阶段本地空块与上述第二阶段共识结果,确定上述交易区块的上链结果。
其中,上述方法还包括:
若上述第一阶段投票结果数量大于或等于上述第一数量阈值,则统计上述第一阶段共识结果中的第一阶段投票空块的数量;上述第一阶段投票空块是由上述至少两个共识节点中,检测出上述交易区块未满足共识条件的共识节点所生成的;
根据上述本地共识结果和上述第一阶段投票空块的数量,确定第一空块数量;
若上述第一空块数量大于第二数量阈值,则生成上述第二阶段本地空块。
其中,上述根据上述本地共识结果和上述第一阶段投票空块的数量,确定第一空块数量,包括:
若上述本地共识结果为针对上述交易区块的区块投票成功结果,则将上述第一阶段投票空块的数量确定为上述第一空块数量;
若上述本地共识结果为第一阶段本地空块,则将上述第一阶段本地空块与上述第一阶段投票空块的数量之和,作为上述第一空块数量。
其中,上述方法还包括:
若在上述第一阶段共识周期内未获取到上述交易区块,则生成上述第一阶段本地空块,将上述第一阶段本地空块作为上述本地共识结果,将上述本地共识结果广播至上述至少两个共识节点。
其中,上述方法还包括:
若在上述第一阶段共识周期内获取到上述交易区块,则对上述交易区块进行验证;
若对上述交易区块验证通过,则生成针对上述交易区块的区块投票成功结果,将上述针对上述交易区块的区块投票成功结果作为上述本地共识结果,将上述本地共识结果广播至上述至少两个共识节点;
若对上述交易区块验证不通过,则生成上述第一阶段本地空块,将上述第一阶段本地空块作为上述本地共识结果,将上述本地共识结果广播至上述至少两个共识节点。
其中,上述方法还包括:
若上述第一阶段投票结果数量大于或等于上述第一数量阈值,则统计上述第一阶段共识结果中的第一阶段投票成功结果的数量;上述第一阶段投票成功结果是由上述至少两个共识节点中,检测出上述交易区块满足共识条件的共识节点所生成的;
根据上述本地共识结果和上述第一阶段投票成功结果的数量,确定第一投票成功数量;
若上述第一投票成功数量大于或等于上述第一数量阈值,则生成第二阶段本地共识成功结果,将上述第二阶段本地共识成功结果广播至上述至少两个共识节点,获取上述至少两个共识节点发送的第二阶段共识结果;
根据上述第二阶段本地共识成功结果与上述第二阶段共识结果,确定上述交易区块的上链结果。
其中,上述根据上述本地共识结果和上述第一阶段投票成功结果的数量,确定第一投票成功数量,包括:
若上述本地共识结果为针对上述交易区块的区块投票成功结果,则将上述本地共识结果与上述第一阶段投票成功结果的数量之和,作为上述第一投票成功数量;
若上述本地共识结果为第一阶段本地空块,则将上述第一阶段投票成功结果的数量,确定为上述第一投票成功数量。
其中,上述根据上述第二阶段本地空块与上述第二阶段共识结果,确定上述交易区块的上链结果,包括:
将上述第二阶段共识结果中的第二阶段共识成功结果的数量,作为第二投票成功数量;
若上述第二投票成功数量大于或等于上述第一数量阈值,则将上述交易区块上传至区块链中,确定上述交易区块的上链结果为上链成功结果;
若上述第二投票成功数量小于上述第一数量阈值,则删除上述交易区块,确定上述交易区块的上链结果为上链失败结果。
其中,上述根据上述第二阶段本地空块与上述第二阶段共识结果,确定上述交易区块的上链结果,包括:
统计上述第二阶段共识结果中的第二阶段共识空块的数量;
将上述第二阶段本地空块与上述第二阶段共识空块的数量之和,作为第二空块数量;
若上述第二空块数量大于第二数量阈值,则删除上述交易区块,确定上述交易区块的上链结果为上链失败结果。
其中,上述根据上述第二阶段本地空块与上述第二阶段共识结果,确定上述交易区块的上链结果,包括:
根据上述第二阶段本地空块与上述第二阶段共识结果,确定第二阶段投票结果数量;
若上述第二阶段投票结果数量小于上述第一数量阈值,则删除上述交易区块,确定上述交易区块的上链结果为上链失败结果。
其中,上述方法还包括:
若上述交易区块的上链结果为上链失败结果,则获取上述交易区块的区块生成节点;
将上述区块生成节点添加至权限限制节点集合中;上述权限限制节点集合包括不具备生成区块权限的共识节点;
获取上述区块生成节点在上述权限限制集合中的存储时长,若上述存储时长大于权限限制时间,则删除上述权限限制集合中的上述区块生成节点,恢复上述区块生成节点的上述生成区块权限。
本申请实施例一方面提供了一种区块链共识装置,上述装置包括:
共识获取模块,用于在第一阶段共识周期内,获取至少两个共识节点发送的针对交易区块的第一阶段共识结果;
投票数量确定模块,用于根据针对上述交易区块的本地共识结果与上述第一阶段共识结果,确定第一阶段投票结果数量;
第一空块生成模块,用于若上述第一阶段投票结果数量小于第一数量阈值,则生成第二阶段本地空块;上述第二阶段本地空块为交易数据为空的区块;
第一共识交互模块,用于在第二阶段共识周期内,将上述第二阶段本地空块广播到上述至少两个共识节点,获取上述至少两个共识节点发送的第二阶段共识结果;上述第一阶段共识周期与上述第二阶段共识周期均属于针对上述交易区块的共识周期,上述第一阶段共识周期早于上述第二阶段共识周期;
上链结果确定模块,用于根据上述第二阶段本地空块与上述第二阶段共识结果,确定上述交易区块的上链结果。
其中,上述装置还包括:
空块统计模块,用于若上述第一阶段投票结果数量大于或等于上述第一数量阈值,则统计上述第一阶段共识结果中的第一阶段投票空块的数量;上述第一阶段投票空块是由上述至少两个共识节点中,检测出上述交易区块未满足共识条件的共识节点所生成的;
上述空块统计模块,还用于根据上述本地共识结果和上述第一阶段投票空块的数量,确定第一空块数量;
第二空块生成模块,用于若上述第一空块数量大于第二数量阈值,则生成上述第二阶段本地空块。
其中,在上述根据上述本地共识结果和上述第一阶段投票空块的数量,确定第一空块数量方面,上述空块统计模块包括:
第一数量确定单元,用于若上述本地共识结果为针对上述交易区块的区块投票成功结果,则将上述第一阶段投票空块的数量确定为上述第一空块数量;
上述第一数量确定单元,还用于若上述本地共识结果为第一阶段本地空块,则将上述第一阶段本地空块与上述第一阶段投票空块的数量之和,作为上述第一空块数量。
其中,上述装置还包括:
第二共识交互模块,用于若在上述第一阶段共识周期内未获取到上述交易区块,则生成上述第一阶段本地空块,将上述第一阶段本地空块作为上述本地共识结果,将上述本地共识结果广播至上述至少两个共识节点。
其中,上述装置还包括:
区块验证模块,用于若在上述第一阶段共识周期内获取到上述交易区块,则对上述交易区块进行验证;
第一结果生成模块,用于若对上述交易区块验证通过,则生成针对上述交易区块的区块投票成功结果,将上述针对上述交易区块的区块投票成功结果作为上述本地共识结果,将上述本地共识结果广播至上述至少两个共识节点;
第三空块生成模块,用于若对上述交易区块验证不通过,则生成上述第一阶段本地空块,将上述第一阶段本地空块作为上述本地共识结果,将上述本地共识结果广播至上述至少两个共识节点。
其中,上述装置还包括:
成功统计模块,用于若上述第一阶段投票结果数量大于或等于上述第一数量阈值,则统计上述第一阶段共识结果中的第一阶段投票成功结果的数量;上述第一阶段投票成功结果是由上述至少两个共识节点中,检测出上述交易区块满足共识条件的共识节点所生成的;
上述成功统计模块,还用于根据上述本地共识结果和上述第一阶段投票成功结果的数量,确定第一投票成功数量;
第二结果生成模块,用于若上述第一投票成功数量大于或等于上述第一数量阈值,则生成第二阶段本地共识成功结果,将上述第二阶段本地共识成功结果广播至上述至少两个共识节点,获取上述至少两个共识节点发送的第二阶段共识结果;
上述上链结果确定模块,用于根据上述第二阶段本地共识成功结果与上述第二阶段共识结果,确定上述交易区块的上链结果。
其中,在上述根据上述本地共识结果和上述第一阶段投票成功结果的数量,确定第一投票成功数量方面,上述成功统计模块包括:
第二数量确定单元,用于若上述本地共识结果为针对上述交易区块的区块投票成功结果,则将上述本地共识结果与上述第一阶段投票成功结果的数量之和,作为上述第一投票成功数量;
上述第二数量确定单元,还用于若上述本地共识结果为第一阶段本地空块,则将上述第一阶段投票成功结果的数量,确定为上述第一投票成功数量。
其中,上述上链结果确定模块,包括:
第三数量确定单元,用于将上述第二阶段共识结果中的第二阶段共识成功结果的数量,作为第二投票成功数量;
上链成功确定单元,用于若上述第二投票成功数量大于或等于上述第一数量阈值,则将上述交易区块上传至区块链中,确定上述交易区块的上链结果为上链成功结果;
上链失败确定单元,用于若上述第二投票成功数量小于上述第一数量阈值,则删除上述交易区块,确定上述交易区块的上链结果为上链失败结果。
其中,上述上链结果确定模块,包括:
空块数量统计单元,用于统计上述第二阶段共识结果中的第二阶段共识空块的数量;
上述空块数量统计单元,还用于将上述第二阶段本地空块与上述第二阶段共识空块的数量之和,作为第二空块数量;
上述上链失败确定单元,还用于若上述第二空块数量大于第二数量阈值,则删除上述交易区块,确定上述交易区块的上链结果为上链失败结果。
其中,上述上链结果确定模块,包括:
投票结果统计单元,用于根据上述第二阶段本地空块与上述第二阶段共识结果,确定第二阶段投票结果数量;
上述上链失败确定单元,还用于若上述第二阶段投票结果数量小于上述第一数量阈值,则删除上述交易区块,确定上述交易区块的上链结果为上链失败结果。
其中,上述装置还包括:
生成节点获取模块,用于若上述交易区块的上链结果为上链失败结果,则获取上述交易区块的区块生成节点;
节点添加模块,用于将上述区块生成节点添加至权限限制节点集合中;上述权限限制节点集合包括不具备生成区块权限的共识节点;
权限更新模块,用于获取上述区块生成节点在上述权限限制集合中的存储时长,若上述存储时长大于权限限制时间,则删除上述权限限制集合中的上述区块生成节点,恢复上述区块生成节点的上述生成区块权限。
本申请实施例一方面提供了一种计算机设备,包括处理器、存储器、输入输出接口;
上述处理器分别与上述存储器和上述输入输出接口相连,其中,上述输入输出接口用于区块链中各个节点的数据交互,上述存储器用于存储程序代码,上述处理器用于调用上述程序代码,以执行如本申请实施例一方面中实现的区块链共识方法。
本申请实施例一方面提供了一种计算机可读存储介质,上述计算机可读存储介质存储有计算机程序,上述计算机程序包括程序指令,上述程序指令当被处理器执行时,执行如本申请实施例一方面中实现的区块链共识方法。
实施本申请实施例,将具有如下有益效果:
本申请实施例通过在第一阶段共识周期内,获取至少两个共识节点发送的针对交易区块的第一阶段共识结果;根据针对交易区块的本地共识结果与第一阶段共识结果与第一阶段共识结果,确定第一阶段投票结果数量;若第一阶段投票结果数量小于第一数量阈值,则生成第二阶段本地空块;在第二阶段共识周期内,将第二阶段本地空块广播到至少两个共识节点,获取至少两个共识节点发送的第二阶段共识结果;根据第二阶段本地空块与第二阶段共识结果,确定交易区块的上链结果。通过对获取到的交易区块进行两次共识,且每次共识阶段都限制了时间,即在第一阶段共识周期和第二阶段共识周期内对交易区块进行共识,因此,即使在对交易区块的共识过程中出现异常情况,导致无法确定该交易区块的上链结果时,也不会中断共识过程,而是生成空块,将该空块作为对应阶段的本地共识结果,使得本地节点可以继续执行后续对交易区块的共识过程,从而提高了区块链共识的效率。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的一种区块链共识网络示意图;
图2是本申请实施例提供的一种区块链共识架构图;
图3是本申请实施例提供的一种区块链共识场景示意图;
图4是本申请实施例提供的一种区块链共识方法流程图;
图5是本申请实施例提供的一种区块链共识具体流程示意图;
图6是本申请实施例提供的一种第一阶段本地共识结果生成场景示意图;
图7是本申请实施例提供的一种上链结果确定场景示意图;
图8是本申请实施例提供的一种区块链共识装置示意图;
图9是本申请实施例提供的一种计算机设备的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
其中,本申请实施例是进行区块链共识,具体来说,是通过两个阶段对接收到的交易区块进行共识验证,当两个阶段之后,交易区块共识通过时,会将该交易区块进行上链,其中,对本申请实施例中所提及的部分名词进行介绍。
1、区块链:狭义上,区块链是一种以区块为基本单位的链式数据结构,区块中利用数字摘要对之前的交易历史进行校验,适合分布式记账场景下防篡改和可扩展性的需求;广义上,区块链还指代区块链结构实现的分布式记账技术,包括分布式共识、隐私与安全保护、点对点通信技术、网络协议、智能合约等。区块链的目标是实现一个分布的数据记录账本,此账本只允许添加,不允许删除。账本底层的基本结构是一个线性的链表。链表由一个个“区块”串联组成,后继区块中记录前继区块的哈希(Hash)值,每个区块(以及区块中的交易)是否合法,可通过计算哈希值的方式进行快速检验。若网络中节点提议添加一个新的区块,必须经过共识机制对区块达成确认。
2、区块(Block):记录一段时间内发生的所有交易和状态结果等,是对当前账本状态的一次共识。具体的,对于区块链来说,每次写入数据,即上述的交易过程,就是创建一个区块。其中,区块是由区块头和区块体组成,该区块体中存储有交易数据,该区块头中记录了该区块体对应的哈希值、区块高度及时间戳等等。本申请实施例中的空块是区块体为空的区块,或者是区块头及区块体均为空的区块,也可以是空数据。
3、共识节点:可以对接收到的交易区块进行共识的节点,各个共识节点可以认为组成了共识网络。其中,每个交易区块只有通过共识节点的共识之后,才能被加入区块链中进行存储。
请参见图1,图1是本申请实施例提供的一种区块链共识网络示意图,如图1所示,共识网络100是指用于进行共识节点与共识节点之间数据共享的网络,且各个共识节点可以对获取到的交易区块进行共识,该共识网络100中可以包括多个共识节点101,多个共识节点101可以是指共识网络100中的各个计算机设备。其中,每个共识节点101在进行正常工作时可以接收到输入信息,并基于接收到的输入信息维护该共识网络100内的共享数据。为了保证共识网络100中的信息互通,该共识网络100中的各个共识节点101之间可以存在信息连接,共识节点101之间可以通过上述信息连接进行信息传输。例如,当共识网络100中的任意共识节点接收到输入信息时,共识网络100中的其他共识节点便根据共识算法获取该输入信息,对该输入信息进行共识,当该输入信息共识成功后,将该输入信息作为共享数据中的数据进行存储,使得共识网络100中的全部共识节点存储的数据均一致,且每个共识节点中存储的数据均是经过共识的,提高了区块链中数据的安全性。
其中,上述计算机设备可以是服务器或终端设备,也可以是服务器和终端设备组成的***,其中,上述所提及的终端设备可以是一种电子设备,包括但不限于手机、平板电脑、台式电脑、笔记本电脑、掌上电脑、移动互联网设备(mobile internet device,MID)、可穿戴设备(例如智能手表、智能手环等)等。
对于共识网络100中的各个共识节点101,可以都具有与其对应的节点标识,该共识网络100中的每个共识节点均存储有共识网络100中其他共识节点的节点标识,以便后续可以根据其他共识节点的节点标识,将生成的交易区块或针对交易区块的共识结果广播至该共识网络100中的其他共识节点。其中,对于任意一个共识节点,可以维护一个节点标识列表,该节点标识列表中包括了该共识网络100中的其他共识节点的节点标识及该节点标识对应的共识节点名称等。其中,该节点标识可以为IP(Internet Protocol,网络之间互联的协议)地址以及其他任一种能够用于标识该共识节点的信息(如共识节点的出厂标识等)。其中,该共识网络100中的各个共识节点101之间也可以通过其他可以进行网络互联的方式进行数据交互。
进一步地,请参见图2,图2是本申请实施例提供的一种区块链共识架构图。其中,共识网络中包括多个共识节点,该共识网络中的任意一个共识节点均可以作为本申请实施例中的执行主体,其中,当任意一个共识节点作为本申请实施例中的执行主体时,均可以执行本申请实施例中的各个步骤,以对交易区块进行共识。其中,该共识网络中包括的多个共识节点可以包括本地节点与至少两个共识节点,其中,本地节点为该多个共识节点中的任意一个共识节点,至少两个共识节点属于共识网络中的多个共识节点中除本地节点之外的其他共识节点。
具体的,如图2所示,该共识网络中包括的多个共识节点包括本地节点201及至少两个共识节点等等,如共识节点202a、共识节点202b及共识节点202c等,各个共识节点之间可以进行数据交互。本地节点201在对交易区块进行共识的第一阶段共识周期内,获取至少两个共识节点发送的针对交易区块的第一阶段共识结果,其中,至少两个共识节点属于多个共识节点中除本地节点201之外的其他共识节点。本地节点201获取到共识节点202a的第一阶段共识结果、共识节点202b的第一阶段共识结果及共识节点202c的第一阶段共识结果后,将本地节点201针对交易区块的本地共识结果,与至少两个共识节点发送的第一阶段共识结果的数量之和,作为第一阶段投票结果数量。当第一阶段投票结果数量小于第一数量阈值时,本地节点201针对交易区块生成第二阶段本地空块,该第二阶段本地空块为交易数据为空的区块,第一数量阈值为交易区块共识成功所需获取的共识节点的区块投票成功结果的最小数量,换言之,只有当针对交易区块的区块投票成功结果的数量达到第一数量阈值时,该交易区块才可以被添加至区块链中。其中,当共识节点202a确定交易区块正确(即认可该交易区块)时,会生成针对该交易区块的区块投票成功结果,同理,该共识网络中认可该交易区块的任意一个共识节点,会生成针对该交易区块的区块投票成功结果。
在第二阶段共识周期内,本地节点201将生成的第二阶段本地空块广播至共识网络中除本地节点201之外的其他共识节点(即本地节点201将第二阶段本地空块发送至共识节点202a、共识节点202b及共识节点202c),并获取至少两个共识节点发送的第二阶段共识结果。本地节点201根据第二阶段本地空块及第二阶段共识结果,确定交易区块的上链结果,例如,当第二阶段共识结果中的第二阶段共识成功结果的数量大于或等于第一数量阈值时,确定该交易区块的上链结果为上链成功结果;当第二阶段本地空块以及第二阶段共识结果中的第二阶段共识空块的数量之和,大于第二数量阈值时,确定该交易区块的上链结果为上链失败结果。其中,本申请实施例中针对一个交易区块的共识过程所用的时间可以认为是一个共识周期,该共识周期包括第一阶段共识周期及第二阶段共识周期,该共识过程包括第一阶段和第二阶段,第一阶段对应的最大时长为第一阶段共识周期,第二阶段对应的最大时长为第二阶段共识周期。
可以理解的是,本申请实施例提供的方法可以由计算机设备执行,即本地节点201可以为计算机设备,该共识网络中除本地节点201之外的其他共识节点也可以是计算机设备,计算机设备包括但不限于终端设备或服务器。
进一步地,请参见图3,图3是本申请实施例提供的一种区块链共识场景示意图。如图3所示,共识节点3011生成针对交易区块的第一阶段共识结果3021,将该第一阶段共识结果3021广播至共识网络中的其他共识节点;共识节点3012生成针对交易区块的第一阶段共识结果3022,将该第一阶段共识结果3022广播至共识网络中的其他共识节点;共识节点3013生成针对交易区块的第一阶段共识结果3023,将该第一阶段共识结果3023广播至共识网络中的其他共识节点;共识节点3014生成针对交易区块的第一阶段共识结果3024,将该第一阶段共识结果3024广播至共识网络中的其他共识节点。上述各个第一阶段共识结果可以是第一阶段投票空块(如第一阶段共识结果3023),或者也可以是区块投票成功结果(如第一阶段共识结果3021)。
本地节点303在第一阶段共识周期内,对获取到的交易区块进行共识,生成针对交易区块的本地共识结果3031。当本地节点303获取到各个共识节点发送的针对交易区块的第一阶段共识结果时,将本地共识结果3031及第一阶段共识结果(如第一阶段共识结果3021至第一阶段共识结果3024等),记作第一阶段投票结果集合304,确定该第一阶段投票结果集合304对应的第一阶段投票结果数量。本地节点303将第一阶段投票结果数量与第一数量阈值305进行对比,若第一阶段投票结果数量小于第一数量阈值305,则生成第二阶段本地空块306,该第二阶段本地空块为交易数据为空的区块。
本地节点303在第二阶段共识周期内,将第二阶段本地空块306广播到至少两个共识节点(包括共识节点3011、共识节点3012、共识节点3013及共识节点3014等)。共识节点3011在第一阶段共识周期内,获取本地节点303、共识节点3012、共识节点3013及共识节点3014等发送的第一阶段共识结果,根据共识节点3011获取到的第一阶段共识结果,生成第二阶段共识结果3071,将第二阶段共识结果3071广播给其他共识节点;共识节点3012在第一阶段共识周期内,获取本地节点303、共识节点3011、共识节点3013及共识节点3014等发送的第一阶段共识结果,根据共识节点3012获取到的第一阶段共识结果,生成第二阶段共识结果3072,将第二阶段共识结果3072广播给其他共识节点;共识节点3013在第一阶段共识周期内,获取本地节点303、共识节点3011、共识节点3012及共识节点3014等发送的第一阶段共识结果,根据共识节点3013获取到的第一阶段共识结果,生成第二阶段共识结果3073,将第二阶段共识结果3073广播给其他共识节点;共识节点3014在第一阶段共识周期内,获取本地节点303、共识节点3011、共识节点3012及共识节点3013等发送的第一阶段共识结果,根据共识节点3014获取到的第一阶段共识结果,生成第二阶段共识结果3074,将第二阶段共识结果3074广播给其他共识节点。
本地节点303将第二阶段本地空块306,以及至少两个共识节点(包括共识节点3011、共识节点3012、共识节点3013及共识节点3014等)发送的第二阶段共识结果,记作第二阶段投票结果集合308,根据第二阶段投票结果集合308,确定该交易区块的上链结果。例如,共识节点3011的第二阶段共识结果为第二阶段共识成功结果,共识节点3012的第二阶段共识结果为第二阶段共识成功结果,共识节点3013的第二阶段共识结果为第二阶段共识成功结果,共识节点3014的第二阶段共识结果为第二阶段共识空块,得到第二阶段投票结果集合308中包括的第二阶段共识成功结果的数量为3,其中,第一数量阈值为3,该第二阶段共识成功结果的数量等于第一数量阈值,则确定该交易区块的上链结果为上链成功结果;共识节点3011的第二阶段共识结果为第二阶段共识空块,共识节点3012的第二阶段共识结果为第二阶段共识空块,共识节点3013的第二阶段共识结果为第二阶段共识成功结果,共识节点3014的第二阶段共识结果为第二阶段共识成功结果,得到第二阶段投票结果集合308中包括的第二阶段共识空块的数量为3(包括第二阶段本地空块),其中,第二数量阈值为2,该第二阶段共识空块的数量大于第二数量阈值,则确定该交易区块的上链结果为上链失败结果。
其中,当共识网络中的任意一个共识节点(如共识节点3011、共识节点3012、共识节点3013或共识节点3014等)执行本申请实施例中的区块链共识过程时,所执行的步骤可以参见上述本地节点303的具体描述。此时,作为执行主体的共识节点,可以认为是本地节点。
本申请实施例通过两个阶段对交易区块进行共识,可以提高交易区块的共识结果的准确性,并且在对交易区块进行共识时,会在第一阶段共识周期内获取第一阶段共识结果,在第二阶段共识周期内获取第二阶段共识结果,使得两个阶段存在时间限制,当在对交易区块进行共识的过程中,出现异常情况导致该交易区块的上链结果无法确定时,也不会中断共识过程,而是生成空块,将该空块作为对应阶段的本地共识结果,使得本地节点可以继续执行后续的共识过程,从而提高了区块链共识的效率。本申请实施例中,共识网络中的各个共识节点均可以作为本地节点执行本申请实施例中的区块链共识的步骤,保障了各个共识节点的共识结果的一致性以及存储数据的一致性和安全性。
进一步地,请参见图4,图4是本申请实施例提供的一种区块链共识方法流程图。如图4所示,以上述计算机设备为执行主体进行描述,该计算机设备在本申请实施例中指本地节点,该区块链共识过程包括如下步骤:
步骤S401,在第一阶段共识周期内,获取至少两个共识节点发送的针对交易区块的第一阶段共识结果。
具体的,本地节点在第一阶段共识周期内,获取至少两个共识节点发送的针对交易区块的第一阶段共识结果。其中,该第一阶段共识周期属于针对该交易区块的共识周期,该针对交易区块的共识周期可以认为是对交易区块进行共识所用的时间周期。其中,至少两个共识节点为共识网络中除本地节点之外的其他共识节点,本地节点获取到的第一阶段共识结果包括至少两个共识节点中的任意一个或多个共识节点发送的针对交易区块的共识结果。例如,本地节点为节点A,至少两个共识节点包括节点B、节点C及节点D,本地节点获取至少两个共识节点发送的针对交易区块的第一阶段共识结果时,由于节点B未发送针对交易区块的第一阶段共识结果,或者,在发送过程中丢失,因此,节点A获取到了节点C及节点D发送的第一阶段共识结果。其中,该第一阶段共识结果可以是区块投票成功结果,也可以是第一阶段投票空块等,该区块投票成功结果用于表示对应的共识节点对交易区块验证通过,该第一阶段投票空块用于表示对应的共识节点未获取到该交易区块或对交易区块验证失败。
具体的,以上述至少两个共识节点中包括的节点B、节点C及节点D为例。节点B生成针对交易区块的第一阶段共识结果1,将该第一阶段共识结果1广播至除节点B之外的其他共识节点;节点C生成针对交易区块的第一阶段共识结果2,将该第一阶段共识结果2广播至除节点C之外的其他共识节点;节点D生成针对交易区块的第一阶段共识结果3,将该第一阶段共识结果3广播至除节点D之外的其他共识节点。本地节点在第一阶段共识周期内,获取至少两个共识节点发送的针对交易区块的第一阶段共识结果,当第一阶段共识周期结束时,该本地节点获取到节点C发送的第一阶段共识结果2,并不再继续获取节点B或节点D的第一阶段共识结果。
步骤S402,根据针对交易区块的本地共识结果与第一阶段共识结果,确定第一阶段投票结果数量。
具体的,本地节点生成针对交易区块的本地共识结果,统计针对交易区块的本地共识结果及第一阶段共识结果的数量之和,将本地共识结果与第一阶段共识结果的数量之和,确定为第一阶段投票结果数量。其中,该第一阶段投票结果数量用于表示本地节点在第一阶段共识周期内,获取到的第一阶段共识结果的总数量(包括本地节点生成的本地共识结果在内),该第一阶段投票结果数量可以用于表示本地节点获取到的针对交易区块的有效票数。
步骤S403,若第一阶段投票结果数量小于第一数量阈值,则生成第二阶段本地空块。
具体的,本地节点将第一阶段投票结果数量与第一数量阈值进行对比,若第一阶段投票结果数量小于第一数量阈值,则生成第二阶段本地空块,其中,该第二阶段本地空块为交易数据为空的区块,如区块体为空而区块头不为空的区块,或区块体与区块头均为空的区块。其中,第一数量阈值是通过共识算法及共识网络中包括的共识节点确定的,用于表示交易区块共识通过所需获取到的针对交易区块的区块投票成功结果的最小数量。举例来说,假定共识算法为拜占庭2/3,该共识网络中包括4个共识节点,则通过共识算法及共识网络,确定该第一数量阈值为3;换句话说,在第一阶段共识周期内,当获取到三个或以上的共识节点生成的针对交易区块的区块投票成功结果,则认为该交易区块的第一阶段共识成功;在第二阶段共识周期内,当获取到三个或以上的共识节点生成的第二阶段共识成功结果,则认为该交易区块的第二阶段共识成功,可以将该交易区块进行上链。
其中,当第一阶段投票结果数量小于第一数量阈值时,可以认为本地节点获取到的有效票数都达不到交易区块共识通过时所需的区块投票成功结果的最小数量,由于第一阶段投票结果数量为获取到的第一阶段共识结果与本地共识结果的总数量,包括区块投票成功结果及第一阶段投票空块。因此,在第一阶段投票结果数量小于第一数量阈值时,区块投票成功结果的总数量一定小于第一数量阈值,即达不到该交易区块在第一阶段共识通过的条件,本地节点可以认为该交易区块在第一阶段内共识失败,生成第二阶段本地空块,该第二阶段本地空块用于表示本地节点在第一阶段对交易区块共识失败。其中,该第二阶段本地空块可以认为是该本地节点的第二阶段本地共识结果。
步骤S404,在第二阶段共识周期内,将第二阶段本地空块广播到至少两个共识节点,获取至少两个共识节点发送的第二阶段共识结果。
具体的,本地节点在第二阶段共识周期内,将第二阶段本地空块广播到至少两个共识节点,获取至少两个共识节点发送的第二阶段共识结果。其中,该第二阶段共识周期属于上述针对交易区块的共识周期,即,该第一阶段共识周期与第二阶段共识周期均属于针对交易区块的共识周期,第一阶段共识周期早于第二阶段共识周期。其中,至少两个共识节点中每个共识节点生成第二阶段共识结果的过程,与本地节点生成第二阶段本地共识结果的过程相同,具体可以参见步骤S403,至少两个共识节点中的任意一个共识节点生成对应的第二阶段共识结果后,将该共识节点生成的第二阶段共识结果广播至共识网络中的其他共识节点。本地节点会获取到至少两个共识节点发送的第二阶段共识结果。
步骤S405,根据第二阶段本地空块与第二阶段共识结果,确定交易区块的上链结果。
具体的,本地节点根据第二阶段本地空块与获取到的第二阶段共识结果,确定交易区块的上链结果。其中,第二阶段本地空块用于表示本地节点在第二阶段共识周期内,对交易区块验证失败。本地节点检测第二阶段本地空块与第二阶段共识结果,是否满足共识条件,当第二阶段本地空块与第二阶段共识结果满足共识条件时,确定交易区块的上链结果为上链成功结果;当第二阶段本地空块与第二阶段共识结果不满足共识条件时,确定交易区块的上链结果为上链失败结果。其中,该共识条件可以是根据共识算法及共识网络所确定的,该共识算法可以是拜占庭2/3,此时的共识条件为共识网络中超出2/3的共识节点对交易区块验证通过。
本申请实施例通过上述区块链共识过程,实现了在第一阶段共识周期内,获取至少两个共识节点发送的针对交易区块的第一阶段共识结果;根据针对交易区块的本地共识结果与第一阶段共识结果与第一阶段共识结果,确定第一阶段投票结果数量;若第一阶段投票结果数量小于第一数量阈值,则生成第二阶段本地空块;在第二阶段共识周期内,将第二阶段本地空块广播到至少两个共识节点,获取至少两个共识节点发送的第二阶段共识结果;根据第二阶段本地空块与第二阶段共识结果,确定交易区块的上链结果。通过对获取到的交易区块进行两次共识,且每个共识阶段都限制了时间,分别为第一阶段共识周期及第二阶段共识周期,使得在每个对交易区块进行共识的周期内,两次共识所需的最长的时长是存在上限的,因此,即使在对交易区块的共识过程中出现异常情况,导致无法确定该交易区块的上链结果时,本地节点也不会中断共识过程,而是生成对应阶段的空块,基于该空块继续执行后续的共识过程,以减少时间的损耗,从而提高了区块链共识的效率。
进一步地,参见图5,图5是本申请实施例提供的一种区块链共识具体流程示意图。如图5所示,在第一阶段共识周期内,本地节点获取交易区块,若在第一阶段共识周期内未获取到交易区块,则执行步骤S501,若在第一阶段共识周期内获取到交易区块,则执行步骤S502,具体步骤如下:
步骤S501,若在第一阶段共识周期内未获取到交易区块,则生成第一阶段本地空块,作为本地共识结果。
具体的,在第一阶段共识周期内,获取交易区块,若在第一阶段共识周期内未获取到交易区块,换句话说,在第一阶段共识周期结束时,本地节点仍未获取到交易区块,则本地节点生成第一阶段本地空块,将第一阶段本地空块作为本地共识结果,将本地共识结果广播至至少两个共识节点,执行步骤S504,获取至少两个共识节点发送的针对交易区块的第一阶段共识结果。
具体的,可以参见图6,图6是本申请实施例提供的一种第一阶段本地共识结果生成场景示意图。如图6所示,共识网络中的一个共识节点获取到交易数据,将该共识节点记作区块生成节点6011,该区块生成节点6011根据该交易数据生成交易区块602,将该交易区块602广播至共识网络中除区块生成节点6011之外的共识节点,包括共识节点6012、共识节点6013及共识节点6014等。以共识节点6012为例,将该共识节点6012记作本地节点,该共识节点6012在第一阶段共识周期内,未获取到区块生成节点6011发送的交易区块602,生成第一阶段本地空块603,将第一阶段本地空块603作为本地共识结果,该第一阶段本地空块603为交易数据为空的区块。共识节点6012将该本地共识结果广播至共识网络中的其他节点,包括区块生成节点6011、共识节点6013及共识节点6014等。
步骤S502,若在第一阶段共识周期内获取到交易区块,对交易区块进行验证。
具体的,若本地节点在第一阶段共识周期内获取到交易区块,对该交易区块进行验证,具体是对该交易区块的区块体中的交易数据及区块头中的区块头数据进行验证。例如,假定该交易区块的区块头中包括区块高度、时间戳及区块头哈希值等,本地节点从区块链中获取时间戳最大的前继区块,获取该前继区块的前继区块高度,当该前继区块高度比区块高度小,且两者间的差值为1,则认为该交易区块的区块高度正确;获取交易区块中区块体中的交易数据,根据该交易区块的区块头中的数据生成哈希值,若该哈希值与区块头哈希值相同,则认为该交易区块的区块头哈希值正确。本地区块对该交易区块的区块头中的数据与区块体中的交易数据进行验证,若该区块头中的数据与区块体中的交易数据均正确,则确定对该交易区块验证通过;若该区块头中的数据与区块体中的交易数据存在错误的数据,则确定对该交易区块验证失败。
步骤S503,根据验证结果生成本地共识结果。
具体的,若对交易区块验证通过,则生成针对该交易区块的区块投票成功结果,将针对上述交易区块的区块投票成功结果作为本地共识结果,将本地共识结果广播至至少两个共识节点;若对交易区块验证不通过,则生成第一阶段本地空块,将第一阶段本地空块作为本地共识结果,将本地共识结果广播至至少两个共识节点。其中,该区块投票成功结果用于表示本地节点在第一阶段共识周期内,认可该交易区块;该第一阶段本地空块用于表示本地节点在第一阶段共识周期内,不认可该交易区块或未获取到该交易区块。
步骤S504,获取至少两个共识节点发送的针对交易区块的第一阶段共识结果。
具体的,本地节点获取至少两个共识节点发送的针对交易区块的第一阶段共识结果,其中每个共识节点生成针对交易区块的第一阶段共识结果的过程,与本地节点生成第一阶段本地共识结果的过程相同。其中,当共识节点为区块生成节点时,由于该交易区块是由区块生成节点生成的,因此该区块生成节点认可该交易区块,生成针对该交易区块的区块投票成功结果,作为该区块生成节点的第一阶段共识结果。
步骤S505,根据本地共识结果与第一阶段共识结果,确定第一阶段投票结果数量。
具体的,将本地共识结果与第一阶段共识结果的数量之和,作为第一阶段投票结果数量。例如,该共识网络中包括6个共识节点,分别为共识节点A、共识节点B、共识节点C、共识节点D、共识节点E及共识节点F,其中,假定该共识节点A为本地节点,该本地节点获取到共识节点B的第一阶段共识结果1以及共识节点C的第一阶段共识结果2,本地节点统计本地共识结果与第一阶段共识结果的数量,得到第一阶段投票结果数量为3,包括本地共识结果、第一阶段共识结果1及第一阶段共识结果2。
步骤S506,对比第一阶段投票结果数量与第一数量阈值,生成第二阶段本地共识结果。
具体的,获取第一数量阈值,对比第一阶段投票结果数量与第一数量阈值,根据对比结果,生成第二阶段本地共识结果。其中,该第一数量阈值是根据共识算法与共识网络确定的,该第一数量阈值用于表示交易区块可以上链时,需要的认可交易区块的共识节点的数量。举例来说,以步骤S505中的共识网络为例,该共识网络中包括6个共识节点,分别为共识节点A、共识节点B、共识节点C、共识节点D、共识节点E及共识节点F,其中,假定该共识节点A为本地节点,当共识算法为拜占庭2/3时,得到第一数量阈值为4。
具体的,一种第二阶段本地共识结果生成过程:若第一阶段投票结果数量小于第一数量阈值,则生成第二阶段本地空块,将该第二阶段本地空块作为第二阶段本地共识结果。例如,获取到共识节点B的第一阶段共识结果1以及共识节点C的第一阶段共识结果2,本地节点统计本地共识结果与第一阶段共识结果的数量,得到第一阶段投票结果数量为3,包括本地共识结果、第一阶段共识结果1及第一阶段共识结果2。其中,该第一阶段投票结果数量3小于第一数量阈值4,则第一阶段投票成功结果的数量一定小于第一数量阈值4,本地节点生成第二阶段本地空块,将该第二阶段本地空块作为第二阶段本地共识结果,以表示该本地节点在第二阶段中认可该交易区块。
另一种第二阶段本地共识结果生成过程;若第一阶段投票结果数量大于或等于第一数量阈值,则统计第一阶段共识结果中的第一阶段投票空块的数量;该第一阶段投票空块是由至少两个共识节点中,检测出交易区块未满足共识条件的共识节点所生成的。根据本地共识结果和第一阶段投票空块的数量,确定第一空块数量;若第一空块数量大于第二数量阈值,则生成第二阶段本地空块,将该第二阶段本地空块作为第二阶段本地共识结果,将第二阶段本地空块广播到至少两个共识节点中。
其中,在确定第一空块数量时,本地节点检测该本地共识结果,若该本地共识结果为针对交易区块的区块投票成功结果,则将第一阶段投票空块的数量确定为第一空块数量;若本地共识结果为第一阶段本地空块,则将第一阶段本地空块与第一阶段投票空块的数量之和,作为第一空块数量。
又一种第二阶段本地共识结果生成过程:若第一阶段投票结果数量大于或等于第一数量阈值,则统计第一阶段共识结果中的第一阶段投票成功结果的数量;第一阶段投票成功结果是由上述至少两个共识节点中,检测出交易区块满足共识条件的共识节点所生成的。根据本地共识结果和第一阶段投票成功结果的数量,确定第一投票成功数量;若第一投票成功数量大于或等于第一数量阈值,则生成第二阶段本地共识成功结果,将该第二阶段本地共识成功结果作为本地节点的第二阶段本地共识结果,将第二阶段本地共识成功结果广播至至少两个共识节点;若第一投票成功数量小于第一数量阈值,则生成第二阶段本地空块,将该第二阶段本地空块作为第二阶段本地共识结果,将该第二阶段本地共识结果广播到至少两个共识节点。
其中,在确定第一投票成功数量时,若本地共识结果为针对交易区块的区块投票成功结果,则将本地共识结果与第一阶段投票成功结果的数量之和,作为第一投票成功数量;若本地共识结果为第一阶段本地空块,则将第一阶段投票成功结果的数量,确定为第一投票成功数量。
具体的,当获取到第一空块数量小于或等于第二数量阈值时,还可以获取第一投票成功数量,若该第一投票成功数量大于或等于第一数量阈值,则生成第二阶段本地共识成功结果,将该第二阶段本地共识成功结果作为本地节点的第二阶段本地共识结果;若第一投票成功数量小于第一数量阈值,则生成第二阶段本地空块,将该第二阶段本地空块作为第二阶段本地共识结果。
其中,第一数量阈值与第二数量阈值的和为共识网络中包括的共识节点的总数量,因此,当第一空块数量大于第二数量阈值时,第一投票成功数量一定会小于第一数量阈值,则本地节点可以确定在第一阶段对交易区块共识不通过,生成第二阶段本地空块。例如,该共识网络中包括6个共识节点,共识算法为拜占庭2/3,则确定第一数量阈值为4,第二数量阈值为2。
步骤S507,获取至少两个共识节点发送的第二阶段共识结果。
具体的,获取至少两个共识节点发送的第二阶段共识结果。其中,每个共识节点生成对应的第二阶段共识结果的过程,与上述步骤S506中本地节点生成第二阶段本地共识结果的过程相同,在此不再进行赘述。
步骤S508,根据第二阶段本地共识结果与第二阶段共识结果,确定交易区块的上链结果。
具体的,根据第二阶段本地共识成功结果与第二阶段共识结果,确定交易区块的上链结果。
其中,一种上链结果确定过程:当本地节点的第二阶段本地共识结果为第二阶段本地空块时,将第二阶段共识结果中的第二阶段共识成功结果的数量,作为第二投票成功数量;当本地节点的第二阶段本地共识结果为第二阶段本地共识成功结果时,将第二阶段本地共识结果与第二阶段共识成功结果的数量之和,作为第二投票成功数量。若第二投票成功数量大于或等于第一数量阈值,则将交易区块上传至区块链中,确定交易区块的上链结果为上链成功结果;若第二投票成功数量小于第一数量阈值,则删除交易区块,确定交易区块的上链结果为上链失败结果。
另一种上链结果确定过程:当本地节点的第二阶段本地共识结果为第二阶段本地空块时,统计第二阶段共识结果中的第二阶段共识空块的数量,将第二阶段本地空块与第二阶段共识空块的数量之和,作为第二空块数量;当本地节点的第二阶段本地共识结果为第二阶段本地共识成功结果时,将第二阶段共识空块的数量,作为第二空块数量。若第二空块数量大于第二数量阈值,则删除交易区块,确定交易区块的上链结果为上链失败结果。
又一种上链结果确定过程:根据第二阶段本地空块与第二阶段共识结果,确定第二阶段投票结果数量;若第二阶段投票结果数量小于第一数量阈值,则删除交易区块,确定交易区块的上链结果为上链失败结果。
具体的,参见图7,图7是本申请实施例提供的一种上链结果确定场景示意图。如图7所示,本地节点获取第二阶段本地共识结果与至少两个共识节点发送的第二阶段共识结果,包括第二阶段共识空块7011、第二阶段共识成功结果7012、第二阶段共识空块7013及第二阶段共识成功结果7014等,其中,第二阶段本地空块对于其他共识节点来说相当于是第二阶段共识空块,第二阶段本地共识成功结果对于其他共识节点来说相当于是第二阶段共识成功结果。
本地节点可以统计第二阶段共识成功结果(包括第二阶段共识成功结果7012、第二阶段共识成功结果7014及第二阶段共识成功结果701m等)的数量,作为第二投票成功数量m,m为正整数。当第二投票成功数量m小于第一数量阈值时,删除交易区块703,确定该交易区块的上链结果为上链失败结果;当第二投票成功数量m大于或等于第一数量阈值时,将交易区块703添加至区块链704中,确定交易区块的上链结果为上链成功结果。
本地节点还可以统计第二阶段共识空块(包括第二阶段共识空块7011、第二阶段共识空块7013及第二阶段共识空块701n)的数量,作为第二空块数量n,n为正整数。当第二空块数量n大于第二数量阈值时,删除交易区块703,确定该交易区块的上链结果为上链失败结果。当第二空块数量n小于或等于第二数量阈值时,获取第二投票成功数量m,对比第二投票成功数量m与第一数量阈值,当第二投票成功数量m小于第一数量阈值时,删除交易区块703,确定该交易区块的上链结果为上链失败结果;当第二投票成功数量m大于或等于第一数量阈值时,将交易区块703添加至区块链704中,确定该交易区块的上链结果为上链成功结果。
步骤S509,当上链结果为上链失败结果时,限制生成交易区块的区块生成节点的生成区块权限。
具体的,若交易区块的上链结果为上链失败结果,则获取该交易区块的区块生成节点。将区块生成节点添加至权限限制节点集合中;权限限制节点集合包括不具备生成区块权限的共识节点。获取区块生成节点在权限限制集合中的存储时长,若存储时长大于权限限制时间,则删除权限限制集合中的区块生成节点,恢复该区块生成节点的生成区块权限。可选的,当本地节点获取到新的交易区块时,获取该新的交易区块的生成节点以及权限限制节点集合,若该新的交易区块的生成节点属于权限限制节点集合,则向该新的交易区块的生成节点发送区块生成异常消息,以通知该新的交易区块的生成节点暂时无生成区块权限。
本申请实施例通过本地节点在第一阶段周期内,获取至少两个共识节点发送的针对交易区块的第一阶段共识结果;并对交易区块进行验证,根据验证结果生成本地共识结果;根据本地共识结果与第一阶段共识结果,确定第一阶段投票结果数量。当第一阶段投票结果数量小于第一数量阈值时,生成第二阶段本地空块;当第一阶段投票结果数量大于或等于第一数量阈值时,根据该第一阶段共识结果中的第一阶段投票成功结果或第一阶段投票空块,以及本地共识结果,生成第二阶段本地共识结果。根据第二阶段本地共识结果与至少两个共识节点发送的第二阶段共识结果,确定交易区块的上链结果。通过上述过程,对交易区块进行两个阶段的共识,第一阶段直接对交易区块进行共识,第二阶段对各个共识节点在第一阶段的共识结果进行共识,提高了对交易区块的数据的安全性及可靠性。同时,对交易区块进行共识的两个阶段都有时间限制,使得在无法确定对交易区块的共识结果时,也不会中断对交易区块的共识过程,而是生成空块,将空块作为对交易区块的共识结果,以继续执行后续的共识过程,从而减少了区块链共识所耗费的时间,提高了区块链共识的效率。
进一步地,参见图8,图8是本申请实施例提供的一种区块链共识装置示意图。上述区块链共识装置可以是运行于计算机设备中的一个计算机程序(包括程序代码),例如该区块链共识装置为一个应用软件;该装置可以用于执行本申请实施例提供的方法中的相应步骤。如图8所示,该区块链共识装置80可以用于上述图4或图5所对应实施例中的计算机设备,具体的,该区块链共识装置80可以包括:共识获取模块11、投票数量确定模块12、第一空块生成模块13、第一共识交互模块14及上链结果确定模块15。
共识获取模块11,用于在第一阶段共识周期内,获取至少两个共识节点发送的针对交易区块的第一阶段共识结果;
投票数量确定模块12,用于根据针对上述交易区块的本地共识结果与上述第一阶段共识结果,确定第一阶段投票结果数量;
第一空块生成模块13,用于若上述第一阶段投票结果数量小于第一数量阈值,则生成第二阶段本地空块;上述第二阶段本地空块为交易数据为空的区块;
第一共识交互模块14,用于在第二阶段共识周期内,将上述第二阶段本地空块广播到上述至少两个共识节点,获取上述至少两个共识节点发送的第二阶段共识结果;上述第一阶段共识周期与上述第二阶段共识周期均属于针对上述交易区块的共识周期,上述第一阶段共识周期早于上述第二阶段共识周期;
上链结果确定模块15,用于根据上述第二阶段本地空块与上述第二阶段共识结果,确定上述交易区块的上链结果。
其中,上述装置80还包括:
空块统计模块16,用于若上述第一阶段投票结果数量大于或等于上述第一数量阈值,则统计上述第一阶段共识结果中的第一阶段投票空块的数量;上述第一阶段投票空块是由上述至少两个共识节点中,检测出上述交易区块未满足共识条件的共识节点所生成的;
上述空块统计模块16,还用于根据上述本地共识结果和上述第一阶段投票空块的数量,确定第一空块数量;
第二空块生成模块17,用于若上述第一空块数量大于第二数量阈值,则生成上述第二阶段本地空块。
其中,在上述根据上述本地共识结果和上述第一阶段投票空块的数量,确定第一空块数量方面,上述空块统计模块16包括:
第一数量确定单元161,用于若上述本地共识结果为针对上述交易区块的区块投票成功结果,则将上述第一阶段投票空块的数量确定为上述第一空块数量;
上述第一数量确定单元161,还用于若上述本地共识结果为第一阶段本地空块,则将上述第一阶段本地空块与上述第一阶段投票空块的数量之和,作为上述第一空块数量。
其中,上述装置80还包括:
第二共识交互模块18,用于若在上述第一阶段共识周期内未获取到上述交易区块,则生成上述第一阶段本地空块,将上述第一阶段本地空块作为上述本地共识结果,将上述本地共识结果广播至上述至少两个共识节点。
其中,上述装置80还包括:
区块验证模块19,用于若在上述第一阶段共识周期内获取到上述交易区块,则对上述交易区块进行验证;
第一结果生成模块20,用于若对上述交易区块验证通过,则生成针对上述交易区块的区块投票成功结果,将上述针对上述交易区块的区块投票成功结果作为上述本地共识结果,将上述本地共识结果广播至上述至少两个共识节点;
第三空块生成模块21,用于若对上述交易区块验证不通过,则生成上述第一阶段本地空块,将上述第一阶段本地空块作为上述本地共识结果,将上述本地共识结果广播至上述至少两个共识节点。
其中,上述装置80还包括:
成功统计模块22,用于若上述第一阶段投票结果数量大于或等于上述第一数量阈值,则统计上述第一阶段共识结果中的第一阶段投票成功结果的数量;上述第一阶段投票成功结果是由上述至少两个共识节点中,检测出上述交易区块满足共识条件的共识节点所生成的;
上述成功统计模块22,还用于根据上述本地共识结果和上述第一阶段投票成功结果的数量,确定第一投票成功数量;
第二结果生成模块23,用于若上述第一投票成功数量大于或等于上述第一数量阈值,则生成第二阶段本地共识成功结果,将上述第二阶段本地共识成功结果广播至上述至少两个共识节点,获取上述至少两个共识节点发送的第二阶段共识结果;
上述上链结果确定模块15,用于根据上述第二阶段本地共识成功结果与上述第二阶段共识结果,确定上述交易区块的上链结果。
其中,在上述根据上述本地共识结果和上述第一阶段投票成功结果的数量,确定第一投票成功数量方面,上述成功统计模块22包括:
第二数量确定单元221,用于若上述本地共识结果为针对上述交易区块的区块投票成功结果,则将上述本地共识结果与上述第一阶段投票成功结果的数量之和,作为上述第一投票成功数量;
上述第二数量确定单元221,还用于若上述本地共识结果为第一阶段本地空块,则将上述第一阶段投票成功结果的数量,确定为上述第一投票成功数量。
其中,上述上链结果确定模块15,包括:
第三数量确定单元151,用于将上述第二阶段共识结果中的第二阶段共识成功结果的数量,作为第二投票成功数量;
上链成功确定单元152,用于若上述第二投票成功数量大于或等于上述第一数量阈值,则将上述交易区块上传至区块链中,确定上述交易区块的上链结果为上链成功结果;
上链失败确定单元153,用于若上述第二投票成功数量小于上述第一数量阈值,则删除上述交易区块,确定上述交易区块的上链结果为上链失败结果。
其中,上述上链结果确定模块15,包括:
空块数量统计单元154,用于统计上述第二阶段共识结果中的第二阶段共识空块的数量;
上述空块数量统计单元154,还用于将上述第二阶段本地空块与上述第二阶段共识空块的数量之和,作为第二空块数量;
上述上链失败确定单元153,还用于若上述第二空块数量大于第二数量阈值,则删除上述交易区块,确定上述交易区块的上链结果为上链失败结果。
其中,上述上链结果确定模块15,包括:
投票结果统计单元155,用于根据上述第二阶段本地空块与上述第二阶段共识结果,确定第二阶段投票结果数量;
上述上链失败确定单元153,还用于若上述第二阶段投票结果数量小于上述第一数量阈值,则删除上述交易区块,确定上述交易区块的上链结果为上链失败结果。
其中,上述装置80还包括:
生成节点获取模块24,用于若上述交易区块的上链结果为上链失败结果,则获取上述交易区块的区块生成节点;
节点添加模块25,用于将上述区块生成节点添加至权限限制节点集合中;上述权限限制节点集合包括不具备生成区块权限的共识节点;
权限更新模块26,用于获取上述区块生成节点在上述权限限制集合中的存储时长,若上述存储时长大于权限限制时间,则删除上述权限限制集合中的上述区块生成节点,恢复上述区块生成节点的上述生成区块权限。
本申请实施例描述了区块链共识装置,上述装置通过本地节点在第一阶段周期内,获取至少两个共识节点发送的针对交易区块的第一阶段共识结果;并对交易区块进行验证,根据验证结果生成本地共识结果;根据本地共识结果与第一阶段共识结果,确定第一阶段投票结果数量。当第一阶段投票结果数量小于第一数量阈值时,生成第二阶段本地空块;当第一阶段投票结果数量大于或等于第一数量阈值时,根据该第一阶段共识结果中的第一阶段投票成功结果或第一阶段投票空块,以及本地共识结果,生成第二阶段本地共识结果。根据第二阶段本地共识结果与至少两个共识节点发送的第二阶段共识结果,确定交易区块的上链结果。通过上述过程,对交易区块进行两个阶段的共识,第一阶段直接对交易区块进行共识,第二阶段对各个共识节点在第一阶段的共识结果进行共识,提高了对交易区块的数据的安全性及可靠性。同时,对交易区块进行共识的两个阶段都有时间限制,使得在无法确定对交易区块的共识结果时,也不会中断对交易区块的共识过程,从而减少了区块链共识所耗费的时间,提高了区块链共识的效率。
参见图9,图9是本申请实施例提供的一种计算机设备的结构示意图。如图9所示,本申请实施例中的计算机设备900可以包括:一个或多个处理器901、存储器902和输入输出接口903。上述处理器901、存储器902和输入输出接口903通过总线904连接。存储器902用于存储计算机程序,该计算机程序包括程序指令,输入输出接口903用于共识网络中的各个共识节点间的数据交互;处理器901用于执行存储器902存储的程序指令,执行如下操作:
在第一阶段共识周期内,获取至少两个共识节点发送的针对交易区块的第一阶段共识结果;
根据针对上述交易区块的本地共识结果与上述第一阶段共识结果,确定第一阶段投票结果数量;
若上述第一阶段投票结果数量小于第一数量阈值,则生成第二阶段本地空块;上述第二阶段本地空块为交易数据为空的区块;
在第二阶段共识周期内,将上述第二阶段本地空块广播到上述至少两个共识节点,获取上述至少两个共识节点发送的第二阶段共识结果;上述第一阶段共识周期与上述第二阶段共识周期均属于针对上述交易区块的共识周期,上述第一阶段共识周期早于上述第二阶段共识周期;
根据上述第二阶段本地空块与上述第二阶段共识结果,确定上述交易区块的上链结果。
在一些可行的实施方式中,上述处理器901可以是中央处理单元(centralprocessing unit,CPU),该处理器还可以是其他通用处理器、数字信号处理器(digitalsignal processor,DSP)、专用集成电路(application specific integrated circuit,ASIC)、现成可编程门阵列(field-programmable gate array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
该存储器902可以包括只读存储器和随机存取存储器,并向处理器901和输入输出接口903提供指令和数据。存储器902的一部分还可以包括非易失性随机存取存储器。例如,存储器902还可以存储设备类型的信息。
具体实现中,上述计算机可通过其内置的各个功能模块执行如上述图4或图5中各个步骤所提供的实现方式,具体可参见上述图4或图5中各个步骤所提供的实现方式,在此不再赘述。
本申请实施例通过提供一种计算机设备,包括:处理器、输入输出接口、存储器,通过处理器获取存储器中的计算机指令,执行上述图4或图5中所示方法的各个步骤,进行区块链共识操作。通过存储器中的计算机指令,处理器执行以下步骤:在第一阶段周期内,获取至少两个共识节点发送的针对交易区块的第一阶段共识结果;并对交易区块进行验证,根据验证结果生成本地共识结果;根据本地共识结果与第一阶段共识结果,确定第一阶段投票结果数量。当第一阶段投票结果数量小于第一数量阈值时,生成第二阶段本地空块;当第一阶段投票结果数量大于或等于第一数量阈值时,根据该第一阶段共识结果中的第一阶段投票成功结果或第一阶段投票空块,以及本地共识结果,生成第二阶段本地共识结果。根据第二阶段本地共识结果与至少两个共识节点发送的第二阶段共识结果,确定交易区块的上链结果。通过上述过程,对交易区块进行两个阶段的共识,第一阶段直接对交易区块进行共识,第二阶段对各个共识节点在第一阶段的共识结果进行共识,提高了对交易区块的数据的安全性及可靠性。同时,对交易区块进行共识的两个阶段都有时间限制,使得在无法确定对交易区块的共识结果时,也不会中断对交易区块的共识过程,从而减少了区块链共识所耗费的时间,提高了区块链共识的效率。
本申请实施例还提供一种计算机可读存储介质,该计算机可读存储介质存储有计算机程序,该计算机程序包括程序指令,当该程序指令被上述处理器执行时,可以实现图4或图5中各个步骤所提供的区块链共识方法,具体可参见上述图4或图5中各个步骤所提供的实现方式,在此不再赘述。另外,对采用相同方法的有益效果描述,也不再进行赘述。对于本申请所涉及的计算机可读存储介质实施例中未披露的技术细节,请参照本申请方法实施例的描述。作为示例,程序指令可被部署为在一个计算机设备上执行,或者在位于一个地点的多个计算机设备上执行,又或者,在分布在多个地点且通过通信网络互连的多个计算机设备上执行。
上述计算机可读存储介质可以是前述任一实施例提供的区块链共识装置或者上述计算机的内部存储单元,例如计算机的硬盘或内存。该计算机可读存储介质也可以是该计算机的外部存储设备,例如该计算机上配备的插接式硬盘,智能存储卡(smart mediacard,SMC),安全数字(secure digital,SD)卡,闪存卡(flash card)等。进一步地,该计算机可读存储介质还可以既包括该计算机的内部存储单元也包括外部存储设备。该计算机可读存储介质用于存储该计算机程序以及该计算机所需的其他程序和数据。该计算机可读存储介质还可以用于暂时地存储已经输出或者将要输出的数据。
本申请实施例的说明书和权利要求书及附图中的术语“第一”、“第二”等是用于区别不同对象,而非用于描述特定顺序。此外,术语“包括”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、装置、产品或设备没有限定于已列出的步骤或模块,而是可选地还包括没有列出的步骤或模块,或可选地还包括对于这些过程、方法、装置、产品或设备固有的其他步骤单元。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
本申请实施例提供的方法及相关装置是参照本申请实施例提供的方法流程图和/或结构示意图来描述的,具体可由计算机程序指令实现方法流程图和/或结构示意图的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。这些计算机程序指令可提供到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或结构示意图一个方框或多个方框中指定的功能的装置。这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或结构示意图一个方框或多个方框中指定的功能。这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或结构示意一个方框或多个方框中指定的功能的步骤。
以上所揭露的仅为本申请较佳实施例而已,当然不能以此来限定本申请之权利范围,因此依本申请权利要求所作的等同变化,仍属本申请所涵盖的范围。
Claims (15)
1.一种区块链共识方法,其特征在于,所述方法包括:
在第一阶段共识周期内,获取至少两个共识节点发送的针对交易区块的第一阶段共识结果;
根据针对所述交易区块的本地共识结果与所述第一阶段共识结果,确定第一阶段投票结果数量;
若所述第一阶段投票结果数量小于第一数量阈值,则生成第二阶段本地空块;所述第二阶段本地空块为交易数据为空的区块;
在第二阶段共识周期内,将所述第二阶段本地空块广播到所述至少两个共识节点,获取所述至少两个共识节点发送的第二阶段共识结果;所述第一阶段共识周期与所述第二阶段共识周期均属于针对所述交易区块的共识周期,所述第一阶段共识周期早于所述第二阶段共识周期;
根据所述第二阶段本地空块与所述第二阶段共识结果,确定所述交易区块的上链结果。
2.如权利要求1所述的方法,其特征在于,所述方法还包括:
若所述第一阶段投票结果数量大于或等于所述第一数量阈值,则统计所述第一阶段共识结果中的第一阶段投票空块的数量;所述第一阶段投票空块是由所述至少两个共识节点中,检测出所述交易区块未满足共识条件的共识节点所生成的;
根据所述本地共识结果和所述第一阶段投票空块的数量,确定第一空块数量;
若所述第一空块数量大于第二数量阈值,则生成所述第二阶段本地空块。
3.如权利要求2所述的方法,其特征在于,所述根据所述本地共识结果和所述第一阶段投票空块的数量,确定第一空块数量,包括:
若所述本地共识结果为针对所述交易区块的区块投票成功结果,则将所述第一阶段投票空块的数量确定为所述第一空块数量;
若所述本地共识结果为第一阶段本地空块,则将所述第一阶段本地空块与所述第一阶段投票空块的数量之和,作为所述第一空块数量。
4.如权利要求3所述的方法,其特征在于,所述方法还包括:
若在所述第一阶段共识周期内未获取到所述交易区块,则生成所述第一阶段本地空块,将所述第一阶段本地空块作为所述本地共识结果,将所述本地共识结果广播至所述至少两个共识节点。
5.如权利要求3所述的方法,其特征在于,所述方法还包括:
若在所述第一阶段共识周期内获取到所述交易区块,则对所述交易区块进行验证;
若对所述交易区块验证通过,则生成针对所述交易区块的区块投票成功结果,将所述针对所述交易区块的区块投票成功结果作为所述本地共识结果,将所述本地共识结果广播至所述至少两个共识节点;
若对所述交易区块验证不通过,则生成所述第一阶段本地空块,将所述第一阶段本地空块作为所述本地共识结果,将所述本地共识结果广播至所述至少两个共识节点。
6.如权利要求1所述的方法,其特征在于,所述方法还包括:
若所述第一阶段投票结果数量大于或等于所述第一数量阈值,则统计所述第一阶段共识结果中的第一阶段投票成功结果的数量;所述第一阶段投票成功结果是由所述至少两个共识节点中,检测出所述交易区块满足共识条件的共识节点所生成的;
根据所述本地共识结果和所述第一阶段投票成功结果的数量,确定第一投票成功数量;
若所述第一投票成功数量大于或等于所述第一数量阈值,则生成第二阶段本地共识成功结果,将所述第二阶段本地共识成功结果广播至所述至少两个共识节点,获取所述至少两个共识节点发送的第二阶段共识结果;
根据所述第二阶段本地共识成功结果与所述第二阶段共识结果,确定所述交易区块的上链结果。
7.如权利要求6所述的方法,其特征在于,所述根据所述本地共识结果和所述第一阶段投票成功结果的数量,确定第一投票成功数量,包括:
若所述本地共识结果为针对所述交易区块的区块投票成功结果,则将所述本地共识结果与所述第一阶段投票成功结果的数量之和,作为所述第一投票成功数量;
若所述本地共识结果为第一阶段本地空块,则将所述第一阶段投票成功结果的数量,确定为所述第一投票成功数量。
8.如权利要求1所述的方法,其特征在于,所述根据所述第二阶段本地空块与所述第二阶段共识结果,确定所述交易区块的上链结果,包括:
将所述第二阶段共识结果中的第二阶段共识成功结果的数量,作为第二投票成功数量;
若所述第二投票成功数量大于或等于所述第一数量阈值,则将所述交易区块上传至区块链中,确定所述交易区块的上链结果为上链成功结果;
若所述第二投票成功数量小于所述第一数量阈值,则删除所述交易区块,确定所述交易区块的上链结果为上链失败结果。
9.如权利要求1所述的方法,其特征在于,所述根据所述第二阶段本地空块与所述第二阶段共识结果,确定所述交易区块的上链结果,包括:
统计所述第二阶段共识结果中的第二阶段共识空块的数量;
将所述第二阶段本地空块与所述第二阶段共识空块的数量之和,作为第二空块数量;
若所述第二空块数量大于第二数量阈值,则删除所述交易区块,确定所述交易区块的上链结果为上链失败结果。
10.如权利要求1所述的方法,其特征在于,所述根据所述第二阶段本地空块与所述第二阶段共识结果,确定所述交易区块的上链结果,包括:
根据所述第二阶段本地空块与所述第二阶段共识结果,确定第二阶段投票结果数量;
若所述第二阶段投票结果数量小于所述第一数量阈值,则删除所述交易区块,确定所述交易区块的上链结果为上链失败结果。
11.如权利要求1所述的方法,其特征在于,所述方法还包括:
若所述交易区块的上链结果为上链失败结果,则获取所述交易区块的区块生成节点;
将所述区块生成节点添加至权限限制节点集合中;所述权限限制节点集合包括不具备生成区块权限的共识节点;
获取所述区块生成节点在所述权限限制集合中的存储时长,若所述存储时长大于权限限制时间,则删除所述权限限制集合中的所述区块生成节点,恢复所述区块生成节点的所述生成区块权限。
12.一种区块链共识装置,其特征在于,所述装置包括:
共识获取模块,用于在第一阶段共识周期内,获取至少两个共识节点发送的针对交易区块的第一阶段共识结果;
投票数量确定模块,用于根据针对所述交易区块的本地共识结果与所述第一阶段共识结果,确定第一阶段投票结果数量;
第一空块生成模块,用于若所述第一阶段投票结果数量小于第一数量阈值,则生成第二阶段本地空块;所述第二阶段本地空块为交易数据为空的区块;
第一共识交互模块,用于在第二阶段共识周期内,将所述第二阶段本地空块广播到所述至少两个共识节点,获取所述至少两个共识节点发送的第二阶段共识结果;所述第一阶段共识周期与所述第二阶段共识周期均属于针对所述交易区块的共识周期,所述第一阶段共识周期早于所述第二阶段共识周期;
上链结果确定模块,用于根据所述第二阶段本地空块与所述第二阶段共识结果,确定所述交易区块的上链结果。
13.如权利要求12所述的装置,其特征在于,所述装置还包括:
空块统计模块,用于若所述第一阶段投票结果数量大于或等于所述第一数量阈值,则统计所述第一阶段共识结果中的第一阶段投票空块的数量;所述第一阶段投票空块是由所述至少两个共识节点中,检测出所述交易区块未满足共识条件的共识节点所生成的;
所述空块统计模块,还用于根据所述本地共识结果和所述第一阶段投票空块的数量,确定第一空块数量;
第二空块生成模块,用于若所述第一空块数量大于第二数量阈值,则生成所述第二阶段本地空块。
14.一种计算机设备,其特征在于,包括处理器、存储器、输入输出接口;
所述处理器分别与所述存储器和所述输入输出接口相连,其中,所述输入输出接口用于区块链中各个节点的数据交互,所述存储器用于存储程序代码,所述处理器用于调用所述程序代码,以执行如权利要求1-11任一项所述的方法。
15.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,所述计算机程序包括程序指令,所述程序指令当被处理器执行时,执行如权利要求1-11任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010295981.2A CN111507840B (zh) | 2020-04-15 | 2020-04-15 | 区块链共识方法、装置、计算机以及可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010295981.2A CN111507840B (zh) | 2020-04-15 | 2020-04-15 | 区块链共识方法、装置、计算机以及可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111507840A true CN111507840A (zh) | 2020-08-07 |
CN111507840B CN111507840B (zh) | 2024-03-26 |
Family
ID=71876134
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010295981.2A Active CN111507840B (zh) | 2020-04-15 | 2020-04-15 | 区块链共识方法、装置、计算机以及可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111507840B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112232954A (zh) * | 2020-10-15 | 2021-01-15 | 杭州溪塔科技有限公司 | 一种提案超时阈值的动态调节方法、装置及电子设备 |
Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108648078A (zh) * | 2018-05-02 | 2018-10-12 | 杭州秘猿科技有限公司 | 一种交易预处理方法、装置及电子设备 |
WO2018223215A1 (en) * | 2017-06-07 | 2018-12-13 | Zeu Crypto Networks Inc. | Scalable trading platform using central bank issued digital currency |
CN109447810A (zh) * | 2018-11-29 | 2019-03-08 | 杭州秘猿科技有限公司 | 并行区块链共识方法、***、电子设备和计算机可读存储介质 |
CA3053208A1 (en) * | 2018-12-13 | 2019-04-18 | Alibaba Group Holding Limited | Performing a change of primary node in a distributed system |
CN110445778A (zh) * | 2019-08-01 | 2019-11-12 | 中盾云链(广州)信息科技有限公司 | 一种应用于联盟链的共识算法 |
CN110493148A (zh) * | 2019-08-12 | 2019-11-22 | 深圳前海微众银行股份有限公司 | 一种区块处理、区块共识和区块同步方法及装置 |
US10504179B1 (en) * | 2015-12-08 | 2019-12-10 | Fmr Llc | Social aggregated fractional equity transaction partitioned acquisition apparatuses, methods and systems |
CN110572429A (zh) * | 2019-07-30 | 2019-12-13 | 中钞***产业发展有限公司杭州区块链技术研究院 | 基于区块链的共识方法、装置、设备及存储介质 |
WO2020011283A2 (en) * | 2019-09-05 | 2020-01-16 | Alibaba Group Holding Limited | System and method for deleting node in blockchain network |
CN110765211A (zh) * | 2019-11-06 | 2020-02-07 | 腾讯科技(深圳)有限公司 | 基于区块链的工程招标管理方法、装置、终端及存储介质 |
CN110995701A (zh) * | 2019-12-02 | 2020-04-10 | 远光软件股份有限公司 | 一种区块链共识方法、***、电子设备、存储介质 |
-
2020
- 2020-04-15 CN CN202010295981.2A patent/CN111507840B/zh active Active
Patent Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10504179B1 (en) * | 2015-12-08 | 2019-12-10 | Fmr Llc | Social aggregated fractional equity transaction partitioned acquisition apparatuses, methods and systems |
WO2018223215A1 (en) * | 2017-06-07 | 2018-12-13 | Zeu Crypto Networks Inc. | Scalable trading platform using central bank issued digital currency |
CN108648078A (zh) * | 2018-05-02 | 2018-10-12 | 杭州秘猿科技有限公司 | 一种交易预处理方法、装置及电子设备 |
CN109447810A (zh) * | 2018-11-29 | 2019-03-08 | 杭州秘猿科技有限公司 | 并行区块链共识方法、***、电子设备和计算机可读存储介质 |
CA3053208A1 (en) * | 2018-12-13 | 2019-04-18 | Alibaba Group Holding Limited | Performing a change of primary node in a distributed system |
CN110572429A (zh) * | 2019-07-30 | 2019-12-13 | 中钞***产业发展有限公司杭州区块链技术研究院 | 基于区块链的共识方法、装置、设备及存储介质 |
CN110445778A (zh) * | 2019-08-01 | 2019-11-12 | 中盾云链(广州)信息科技有限公司 | 一种应用于联盟链的共识算法 |
CN110493148A (zh) * | 2019-08-12 | 2019-11-22 | 深圳前海微众银行股份有限公司 | 一种区块处理、区块共识和区块同步方法及装置 |
WO2020011283A2 (en) * | 2019-09-05 | 2020-01-16 | Alibaba Group Holding Limited | System and method for deleting node in blockchain network |
CN110765211A (zh) * | 2019-11-06 | 2020-02-07 | 腾讯科技(深圳)有限公司 | 基于区块链的工程招标管理方法、装置、终端及存储介质 |
CN110995701A (zh) * | 2019-12-02 | 2020-04-10 | 远光软件股份有限公司 | 一种区块链共识方法、***、电子设备、存储介质 |
Non-Patent Citations (3)
Title |
---|
程发新;程栋;赵艳萍;罗建强;: "基于共识决策的低碳供应商选择方法研究", 运筹与管理, vol. 21, no. 06, 31 December 2012 (2012-12-31) * |
肖婧;张永建;许小可;: "复杂网络模糊重叠社区检测研究进展", 复杂***与复杂性科学, vol. 14, no. 03 * |
钟伟;吴娟;陈露;: "基于学***台的师生共读活动之社会网络分析和内容分析", 现代远距离教育, no. 01 * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112232954A (zh) * | 2020-10-15 | 2021-01-15 | 杭州溪塔科技有限公司 | 一种提案超时阈值的动态调节方法、装置及电子设备 |
Also Published As
Publication number | Publication date |
---|---|
CN111507840B (zh) | 2024-03-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112446785B (zh) | 跨链交易方法、***、装置、设备和存储介质 | |
CN111600720B (zh) | 基于区块链的数据处理方法、装置、设备及可读存储介质 | |
CN112134762B (zh) | 针对区块链网络结构的测试方法、装置、终端和存储介质 | |
CN111209339B (zh) | 区块同步方法、装置、计算机以及存储介质 | |
CN110070445B (zh) | 一种基于区块链***的交易处理方法及装置 | |
CN109656778B (zh) | 数据获取方法、装置、计算机设备和存储介质 | |
CN111461885B (zh) | 共识网络管理方法、装置、计算机以及可读存储介质 | |
CN110569251A (zh) | 一种数据处理方法、相关设备及计算机可读存储介质 | |
CN111382456A (zh) | 提案消息处理方法、装置、设备以及存储介质 | |
CN111556115B (zh) | 一种基于区块链的数据处理方法、装置、设备及存储介质 | |
CN110570196A (zh) | 交易数据处理方法、装置、终端设备以及存储介质 | |
CN111209343B (zh) | 节点数据同步方法、装置、设备以及存储介质 | |
CN111464353B (zh) | 区块链节点管理方法、装置、计算机以及可读存储介质 | |
CN111061769A (zh) | 一种区块链***的共识方法及相关设备 | |
CN113326165B (zh) | 基于区块链的数据处理方法、设备及计算机可读存储介质 | |
EP3742321A1 (en) | Storage of measurement datasets and distributed databases | |
CN111614761B (zh) | 区块链消息传输方法、装置、计算机以及可读存储介质 | |
CN112671908B (zh) | 网络管理方法、装置、电子设备及可读存储介质 | |
CN112822239A (zh) | 一种区块链共识方法、装置、电子设备及存储介质 | |
CN110599180A (zh) | 一种基于区块链的疫苗流通管理方法及装置 | |
CN115730935A (zh) | 基于区块链的数据处理方法、装置、设备及可读存储介质 | |
US20220239668A1 (en) | Blockchain-based message processing method and apparatus, device, and storage medium | |
CN113852470B (zh) | 提案广播方法、装置、设备和存储介质 | |
CN111507840B (zh) | 区块链共识方法、装置、计算机以及可读存储介质 | |
CN112200680B (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: 40027390 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 |