CN109949157B - 一种业务数据的上链方法、装置及系统 - Google Patents

一种业务数据的上链方法、装置及系统 Download PDF

Info

Publication number
CN109949157B
CN109949157B CN201910175484.6A CN201910175484A CN109949157B CN 109949157 B CN109949157 B CN 109949157B CN 201910175484 A CN201910175484 A CN 201910175484A CN 109949157 B CN109949157 B CN 109949157B
Authority
CN
China
Prior art keywords
block
nodes
preset
node
rule
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
Application number
CN201910175484.6A
Other languages
English (en)
Other versions
CN109949157A (zh
Inventor
姜海涛
吕晓一
李升林
张军
孙立林
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Juzix Technology Shenzhen Co ltd
Original Assignee
Juzix Technology Shenzhen Co ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Juzix Technology Shenzhen Co ltd filed Critical Juzix Technology Shenzhen Co ltd
Priority to CN201910175484.6A priority Critical patent/CN109949157B/zh
Publication of CN109949157A publication Critical patent/CN109949157A/zh
Application granted granted Critical
Publication of CN109949157B publication Critical patent/CN109949157B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)
  • Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)

Abstract

本说明书实施例公开了一种区块链共识的处理方法、装置及系统。所述方法包括区块链中的出块节点连续产生至少一个区块,并对所述区块签名后进行广播;区块链中的共识节点接收区块,并根据预设规则验证所述区块是否合法;确认合法时,对所述区块进行签名并广播;区块链中的节点判断自己是否在出块窗口期,确认在所述出块窗口期时,将处于所述出块窗口期的节点作为出块节点;当产生的区块的签名数达到预设数量时,确认所述区块获得区块链中节点的共识,将共识后的区块写入区块链。利用本说明书实施例可以使共识与出块效率、扩展性、资源消耗和容错性方面更均衡高效。

Description

一种业务数据的上链方法、装置及系统
技术领域
本说明书实施例方案属于互联网信息处理技术以及计算机技术领域,尤其涉及一种区块链共识的处理方法、装置及系统。
背景技术
在区块链系统中,共识机制是使全部或大部分网络节点就某些交易或数据达成一致的机制。共识机制允许在部分网络节点失效的情况下,系统仍能正常工作,这种容错能力是区块链系统的一个主要优势。因此共识机制是区块链系统的核心。业界目前对公链共识机制的技术水平有以下维度的需求:性能效率:高并发,高吞吐量,高速处理;资源消耗:共识过程中耗费的CPU、网络输入输出、存储等计算机资源;容错性:防攻击、防欺诈的能力;扩展性:新节点加入与退出,参与共识。
目前业界广泛使用的共识机制有PoW算法(包括其扩展算法PoS和DPoS)、Paxos算法、PBFT算法和DBFT算法。其中,PoW算法依赖机器进行数学运算来获取记账权,资源消耗相比其它共识机制高、可监管性弱,同时每次达成共识需要全网共同参与运算,性能效率比较低,容错性方面允许全网50%节点出错。PoS算法主要思想是节点记账权的获得难度与节点持有的权益成反比,相对于PoW,一定程度减少了数学运算带来的资源消耗,性能也得到了相应的提升,但依然是基于哈希运算竞争获取记账权的方式,可监管性弱,该共识机制容错性和PoW相同。DPoS算法与PoS的主要区别在于节点选举若干代理人,由代理人验证和记账,其合规监管、性能、资源消耗和容错性与PoS相似。Paxos算法是一种基于选举领导者的共识机制,领导者节点拥有绝对权限,并允许强监管节点参与,性能高,资源消耗低,其所有节点一般有线下准入机制,但选举过程中不允许有作恶节点,不具备容错性。PBFT算法与Paxos类似,也是一种采用许可投票、少数服从多数来选举领导者进行记账的共识机制,但该共识机制允许拜占庭容错,该共识机制允许强监管节点参与,具备权限分级能力,性能更高,耗能更低,该算法每轮记账都会由全网节点共同选举领导者,允许33%的节点作恶,容错性为33%,但是PBFT的每轮共识基于前一个区块确认后才能进行下一轮,严重影响了共识效率。DBFT算法是基于拜占庭容错算法之上,加入了授权共识机智,其使用权益来选出记账人,然后各个记账人之间通过拜占庭容错算法达成共识,专业化的记账人可以容忍任何类型的错误,记账由多人协作完成,每一个区块都有最终性,算法的可靠性有着严格的数据证明,其缺点是当三分之一或以上的记账人停止工作后,系统将无法提供服务。
然而,以上所有共识机制都存在一个相似的问题,就是共识与出块串行执行,这种机制会直接导致共识与出块效率受到限制,无法打破现有瓶颈,达到高吞吐级别。
因此,业内亟需一种可以实现共识与出块并行执行的共识机制的解决方案。
发明内容
本说明书实施例目的在于提供一种区块链共识的处理方法、装置及系统,可以实现共识与出块并行,使共识与出块效率、扩展性、资源消耗和容错性方面更均衡高效。
一方面本申请提供了一种区块链共识的处理方法,包括:
区块链中的出块节点连续产生至少一个区块,并对所述区块签名后进行广播;
区块链中的共识节点接收区块,并根据预设规则验证所述区块是否合法;确认合法时,对所述区块进行签名并广播;
区块链中的节点判断自己是否在出块窗口期,确认在所述出块窗口期时,将处于所述出块窗口期的节点作为出块节点;
当产生的区块的签名数达到预设数量时,确认所述区块获得区块链中节点的共识,将共识后的区块写入区块链。
本说明书提供的所述方法的另一个实施例中,所述区块链中的共识节点接收区块,并根据预设规则验证所述区块是否合法,包括:
判断所述区块是否满足预设合法规则;
确定满足所述预设合法规则时,判断所述区块是否满足预设合理规则,其中,所述预设规则包括所述预设合法规则和所述预设合理规则。
本说明书提供的所述方法的另一个实施例中,所述判断所述区块是否满足预设合法规则,包括:
判断所述区块是否满足下面公式:
I×10×1000<(N-L-O)%(n×10×1000)<(I+1)×10×1000-I×10×1000<(N-L+O)%(n×10×1000)<(I+1)×10×1000
其中,I表示出块节点在所有节点中的位置,N表示当前系统时间,L表示上一轮转周期最后一个区块的产生时间,n表示每一轮选取的共识节点数,O表示每个共识节点的出块窗口时间除以2与1000的差;
如果满足上述公式,则确定所述区块满足所述预设合法规则;如果不满足上述公式,则确定所述区块不满足所述预设合法规则,所述区块被丢弃。
本说明书提供的所述方法的另一个实施例中,所述预设合理规则包括:
当前区块的高度是否符合当前节点的时间窗口期;
当前区块的出块时间和上一个区块的出块时间是否满足出块时间间隔要求;
当前节点的最高不可逆区块是否为所述区块的祖先区块;
当前节点是否对其它相同高度的区块进行过签名。
本说明书提供的所述方法的另一个实施例中,在所述确认合法时,对所述区块进行签名并广播时,包括:
判断在对所述区块进行签名并广播前是否收到过所述区块的子孙区块;
确认收到过所述区块的子孙区块时,则同时对所述子孙区块进行签名后广播。
本说明书提供的所述方法的另一个实施例中,所述区块链中的节点按照下面公式判断自己是否在出块窗口期:
I×10×1000<(N-L)%(n×10×1000)<(I+1)×10×1000
其中,I表示出块节点在所有节点中的位置,N表示当前系统时间,L表示上一轮转周期最后一个区块的产生时间。
本说明书提供的所述方法的另一个实施例中,所述将共识后的区块写入区块链前,包括:
判断所述区块是否满足预设入链规则,所述预设入链规则包括所述区块的高度大于所述区块链中当前不可逆区块的高度,且所述区块的祖先区块是所述当前不可逆区块;
确认满足时,则将所述区块写入区块链,并将所述区块更新为所述区块链中当前不可逆区块。
本说明书提供的所述方法的另一个实施例中,所述将所述区块更新为所述区块链中当前不可逆区块后,包括:
从所述当前不可逆区块开始查找子孙区块,判断所述子孙区块中是否存在更高的不可逆区块;
确认存在时,则将所述更高的不可逆区块与所述当前不可逆区块之间的所有区块写入区块链,并将所述更高的不可逆区块更新为所述区块链中当前不可逆区块。
另一方面,本说明书实施例还提供一种区块链共识的处理装置,所述装置包括:
区块产生模块,用于区块链中的出块节点连续产生至少一个区块,并对所述区块签名后进行广播;
区块验证模块,用于区块链中的共识节点接收区块,并根据预设规则验证所述区块是否合法;确认合法时,对所述区块进行签名并广播;
出块判断模块,用于区块链中的节点判断自己是否在出块窗口期,确认在所述出块窗口期时,将处于所述出块窗口期的节点作为出块节点;
确认共识模块,用于当产生的区块的签名数达到预设数量时,确认所述区块获得区块链中节点的共识,将共识后的区块写入区块链。
本说明书提供的所述装置的另一个实施例中,所述区块验证模块,包括:
第一判断单元,用于判断所述区块是否满足预设合法规则;
第二判断单元,用于确定满足所述预设合法规则时,判断所述区块是否满足预设合理规则,其中,所述预设规则包括所述预设合法规则和所述预设合理规则。
本说明书提供的所述装置的另一个实施例中,在所述确认合法时,对所述区块进行签名并广播时,包括:
第三判断单元,用于判断在所述对所述区块进行签名并广播前是否收到过所述区块的子孙区块;
子孙区块处理单元,用于确认收到过所述区块的子孙区块时,则同时对所述子孙区块进行签名后广播。
本说明书提供的所述装置的另一个实施例中,所述将共识后的区块写入区块链前,包括:
第四判断单元,用于判断所述区块是否满足预设入链规则,所述预设入链规则包括所述区块的高度大于所述区块链中当前不可逆区块的高度,且所述区块的祖先区块是所述当前不可逆区块;
区块写入单元,用于确认满足时,则将所述区块写入区块链,并将所述区块更新为所述区块链中当前不可逆区块。
本说明书提供的所述装置的另一个实施例中,所述将所述区块更新为所述区块链中当前不可逆区块后,包括:
查找判断单元,用于从所述当前不可逆区块开始查找子孙区块,判断所述子孙区块中是否存在更高的不可逆区块;
更新单元,用于确认存在时,则将所述更高的不可逆区块与所述当前不可逆区块之间的所有区块写入区块链,并将所述更高的不可逆区块更新为所述区块链中当前不可逆区块。
另一方面,本说明书实施例提供一种区块链共识的处理设备,包括处理器及用于存储处理器可执行指令的存储器,所述指令被所述处理器执行时实现包括以下步骤:
区块链中的出块节点连续产生至少一个区块,并对所述区块签名后进行广播;
区块链中的共识节点接收区块,并根据预设规则验证所述区块是否合法;确认合法时,对所述区块进行签名并广播;
区块链中的节点判断自己是否在出块窗口期,确认在所述出块窗口期时,将处于所述出块窗口期的节点作为出块节点;
当产生的区块的签名数达到预设数量时,确认所述区块获得区块链中节点的共识,将共识后的区块写入区块链。
另一方面,本说明书实施例提供一种区块链共识的处理系统,包括至少一个处理器以及存储计算机可执行指令的存储器,所述处理器执行所述指令时实现上述任意一个实施例所述方法的步骤。
本说明书实施例提供的一种区块链共识的处理方法、装置及系统,当区块链中某个节点处于一轮出块窗口期时,其可以连续产生多个区块,然后打包签名并广播给区块链中其它节点,当节点收到新的区块后会进行验证,如果验证通过,则对区块再次签名并广播,当区块收到的签名数达到预设数量时,则该区块成为最后不可逆区块,即确认该区块获得区块链中节点的共识,将所述区块写入区块链。采用本说明书提供的实施方案,在共识过程中,共识与出块过程同时进行,即一边进行共识,一边进行出块,不需要等到前一个区块确认上链后再进行下一轮的共识,这样,可以使得共识与出块效率、扩展性、资源消耗和容错性方面更均衡高效,更接近甚至完全符合商业化的实时处理要求。
附图说明
为了更清楚地说明本说明书实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本说明书中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本说明书提供的目前共识机制中共识与出块执行的流程示意图;
图2是本说明书提供的一种区块链共识的处理方法的一个实施例的流程示意图;
图3是本说明书提供的一个实施例中共识与出块并行执行的流程示意图;
图4是本说明书提供的一种区块链共识的处理的一个具体实施例的流程示意图;
图5是本说明书提供的一种区块链共识的处理装置的一个实施例的模块结构示意图;
图6是本说明书提供的一种区块链共识的处理系统的实施例的模块结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本说明书中的技术方案,下面将结合本说明书实施例中的附图,对本说明书实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本说明书中的一部分实施例,而不是全部的实施例。基于本说明书中的一个或多个实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都应当属于本说明书实施例保护的范围。
区块链技术也称为分布式账本技术,是一种分布式互联网数据库技术。基于区块链技术构建的网络可以称之为区块链网络,在该区块链网络中包含网络节点(也可以称之为区块链节点,简称为节点),每一个节点对应至少一个区块链,每一个区块链上至少包含一个区块。区块链网络具备去中心化、公开透明、不可篡改、可信任等特点。基于这些特点,区块链技术应用领域越来越广泛。具体地,业务数据上链(即被存储在区块链网络中)的过程包含三个阶段:受理阶段、共识阶段和存储阶段。其中,受理阶段可以理解为待上链的业务数据被区块链网络中的某一区块链节点接收到,并由该区块链节点受理该业务数据;共识阶段可以理解为区块链节点在受理该业务数据之后,需要由区块链网络中的其他区块链节点参与对该业务数据进行共识处理,业务数据通过共识后,可以进入存储阶段;存储阶段可以理解为区块链节点将共识通过的业务数据进行上链处理。在业务数据上链所经历的三个阶段中,共识阶段是需要区块链网络中的其他区块链节点参与的。
目前业界关于区块链中共识阶段广泛使用的共识机制有PoW算法(包括其扩展算法PoS和DPoS)、Paxos算法、PBFT算法和DBFT算法。具体的,如图1所示,图1是本说明书提供的目前共识机制中共识与出块执行的流程示意图。其中,虚线框内表示某个节点的出块时间窗口,由图可知,一个节点需要对上一个区块B0确认后才能生产下一个区块B1。也就是说,目前区块链中节点会轮流负责出块,每一个区块产生后,会按照顺序传递到下一个节点中,第二个节点要负责打包新的区块,同时需要确认上一区块的内容,当某一区块被超过预先设定数量的节点确认后,该区块将被确认为不可逆区块。可见,目前区块链中共识机制都存在一个相似的问题,就是共识与出块串行执行,这种机制会直接导致共识与出块效率受到限制,无法打破现有瓶颈,达到高吞吐级别。
相应地,针对产生上述技术问题的根本原因,本说明书实施例提供了一种区块链共识的处理方法,可以在共识过程中,共识与出块同时进行,即共识与出块并行,一边进行共识,一边进行出块,不需要等到前一个区块确认上链后再进行下一轮的共识。具体的,当区块链中某个节点处于一轮出块窗口期时,其可以连续产生多个区块,然后打包签名并广播给区块链中其它节点,当节点收到新的区块后会进行验证,如果验证通过,则对区块再次签名并广播,当区块收到的签名数达到预设数量时,则该区块成为最后不可逆区块,即确认该区块获得区块链中节点的共识,将所述区块写入区块链。这样,区块链中节点可以在出块的同时对多个区块进行共识,不需要等待前面区块被确认获得共识后再对另一个区块进行共识,使得共识与出块效率、扩展性、资源消耗和容错性方面更均衡高效,更接近甚至完全符合商业化的实时处理要求。
下面以一个具体的应用场景为例对本说明书实施方案进行说明。具体的,图2是本说明书提供的一种区块链共识的处理方法的一个实施例的流程示意图。虽然本说明书提供了如下述实施例或附图所示的方法操作步骤或装置结构,但基于常规或者无需创造性的劳动在所述方法或装置中可以包括更多或者部分合并后更少的操作步骤或模块单元。在逻辑性上不存在必要因果关系的步骤或结构中,这些步骤的执行顺序或装置的模块结构不限于本说明书实施例或附图所示的执行顺序或模块结构。所述的方法或模块结构的在实际中的装置、服务器或终端产品应用时,可以按照实施例或者附图所示的方法或模块结构进行顺序执行或者并行执行(例如并行处理器或者多线程处理的环境、甚至包括分布式处理、服务器集群的实施环境)。
当然,下述实施例的描述并不对基于本说明书的其他可扩展到的技术方案构成限制。
具体的一种实施例如图2所示,本说明书提供的一种区块链共识的处理方法的一种实施例中,所述方法可以包括:
S1:区块链中的出块节点连续产生至少一个区块,并对所述区块签名后进行广播。
区块链中一个节点实际上就是一台接入区块链的计算机(服务器),任何联网的计算机都可以接入区块链,所以区块链上的节点是无数的。区块是把一堆账目(交易)打包在一起形成的。很多区块一个一个有机组织在一起,就是一条区块链了。区块里面有很多交易条目,同时它也带有其他一些数据,比如hash、时间戳、索引号、上一块数据hash、随机数等。一个区块不等于一个节点,区块链上的区块是有限的,达到一定数量后便不再新增。为了便于理解,可以认为节点是点、区块是线、区块链是面,节点是区块链应用技术里处理信息的基本单位,很多节点处理完信息后,信息会被打上时间戳,生成数据区块,把区块按时间先后顺序连接起来就组成区块链。
进一步地,由于任何联网的计算机都可以接入区块链,导致区块链上的节点是无数的,这样在对区块进行共识处理时,随着参与共识的区块链节点的数量增加,对业务数据进行共识处理的时间延长,进而会导致区块共识处理效率低。因此,在一些实施例中,可以按照一些规则在区块链所有节点中选择一部分节点进行出块与验证,即在区块链网络中通过所有节点选举产生超级节点,利用超级节点进行出块及共识,进而大幅度的降低共识过程中的节点数量,提高区块共识处理效率。其中,区块链网络中所有节点选举产生的超级节点进行一个完整出块及共识过程所需的时间叫做轮转周期。选举规则可以根据计算能力、股权数或者其他可以比较的特征量,对此不作限制。需要说明的是,一些实施例中节点是指区块链中的所有节点,另一些实施例中,节点是指通过选举产生的超级节点。优选的,本说明书实施例中的节点均是指在区块链网络中通过所有节点选举产生的超级节点,也叫共识节点,以下简称节点。
由于区块链中选举出的节点可以按照预设规则轮流出块,也可以随机出块,所以出块节点可以理解为区块链中正在出块的节点,也可以理解为区块链中处于出块窗口期的节点。出块窗口期也就是节点的出块时间,例如,3秒、1分钟、5分钟等,其可以根据实际需求进行设置。本说明书一个实施例中,区块链中的出块节点连续产生至少一个区块可以包括所述出块节点在出块窗口期内以预设时间间隔连续产生至少一个区块,这样出块节点产生一个区块后不需要等到该区块确认上链后就可以进行下一个区块的产生与共识了。其中,产生的多个区块中未确认的区块暂存于内存中,一旦发生分叉情况,在内存中可以快速切换选择有效的链,当区块已确认为最终不可逆区块后将区块数据写入区块链。此外,出块节点严格按照预先设定的时间进行出块,这里预先设定的时间就可以理解为出块窗口期。具体的,当某个节点处于一轮出块窗口期时,其可以在预先设定的出块窗口期内每隔p秒连续的产生多个区块,不需要等到该区块确认上链后再进行下一个区块的产生与共识。如图3所示,图3是本说明书提供的一个实施例中共识与出块并行执行的流程示意图,其中,虚线框内表示某个节点的出块时间窗口,由图可知,一个节点可以在连续生产多个区块B1、B2、B3、……、Bn的同时对区块B0、B1、B2、……、Bn-1进行确认,并不需要等待上一个区块(如B1)确认后再生产下一个区块(B2)。进一步地,例如,在出块窗口期内,出块节点每隔0.5秒连续性的出了区块N和N+1,不需要等到区块N确认上链后就可以进行区块N+1的产生与共识。需要说明的是,通常在出块窗口期可以只有一个节点进行出块。节点的出块顺序可以是随机的,也可以是按照预设规则排好序的,对此不作限制。所述预设时间间隔可以根据实际场景需求进行设置,对此也不作限制。
本说明书一个实施例中,在出块节点连续产生多个区块后,会分别将每个区块进行打包并签名,然后广播给区块链中的其它节点(也叫共识节点)进行验证。具体的,出块节点在预先设定的出块窗口期内以一定时间间隔产生若干区块,其每产生一个区块后,出块节点进行签名后立即向其它节点进行广播。其中,签名(也可以称为公钥数字签名或电子签章等)具体可以理解为是一种基于公钥加密技术,用于证明用户身份的数字签名。具体的,上述签名可以是一段与用户身份对应,且不易伪造的字符串。在进行具体的交易数据处理时,例如,可以根据上述签名,验证用户的身份,并调用用户账户中的资金数据进行具体的交易数据处理。
需要说明的是,签名的目的是保证数据不被篡改,签名后的业务数据没有任何变化,只会多一个数据签名。若对数据进行修改后,对应的数据签名会发生改变,通过对数据进行签名校验就可以知道数据是否被篡改。
S2:区块链中的共识节点接收区块,并根据预设规则验证所述区块是否合法;确认合法时,对所述区块进行签名并广播。
共识节点通常是区块链中选举出的节点,其包括出块节点。通常情况中,出块节点也可以称为提议人,其他共识节点可以称为验证人。
本说明书一个实施例中,在出块节点连续产生多个区块后,会分别将每个区块进行打包并签名,然后广播给区块链中的其它共识节点进行验证,区块链中的其他共识节点接收后会根据预设规则进行合法验证,在验证通过后,会进行再次签名并广播给其他节点。
在一个实施例中,上述验证区块是否合法可以主要包括两种方式:合法性验证和合理性验证。
然而,一些实施例中,区块链中的其他共识节点接收后可以只验证区块的合法性,在满足合法性的条件时进行签名并广播。另一些实施例中,区块链中的其他共识节点也可以只验证区块的合理性,在满足合理性的条件时进行签名并广播。优选的,本说明书一些实施例中,由于对区块的合法性判断是单纯的时间范围的校验,其粒度比较粗,所以区块链中的其他共识节点接收后可以先验证区块的合法性然后验证合理性,在满足合法性和合理性的全部条件时进行签名并广播。
具体的,在区块链中的其他共识节点接收区块后先验证区块的合法性然后验证合理性时,即所述区块链中的共识节点接收区块,并根据预设规则验证所述区块是否合法,包括:判断所述区块是否满足预设合法规则;确定满足所述预设合法规则时,判断所述区块是否满足预设合理规则,其中,所述预设规则包括所述预设合法规则和所述预设合理规则。所述预设合理规则包括:当前区块的高度是否符合当前节点的时间窗口期;当前区块的出块时间和上一个区块的出块时间是否满足出块时间间隔要求;当前节点的最高不可逆区块是否为所述区块的祖先区块;当前节点是否对其它相同高度的区块进行过签名。上述最高不可逆区块是当前区块链中区块的高度最高的区块,上述区块的高度是区块链接在主链的个数,也就是连接在区块链上的块数。因为区块通过规则链接在一起构成了区块链,创始区块默认高度为0,其后一个区块高度为1,以此类推(区块链的规则是系统只认可长度最长的区块链条)。例如:某一个区块的高度为386357,意味着从创世区块到当前的这个区块最长的链条区块数为386357+1个。区块的高度可以用来识别区块在区块链中的位置,并据此找到和这个区块相关的所有基础属性和交易记录。
所述判断所述区块是否满足预设合法规则,包括:判断所述区块是否满足公式(1),如果满足,则确定所述区块满足所述预设合法规则;如果不满足,则确定所述区块不满足所述预设合法规则,所述区块被丢弃。
Figure GDA0003331184270000101
其中,I可以表示出块节点在所有节点中的位置,N可以表示当前系统时间,L可以表示上一轮转周期最后一个区块的产生时间,n可以表示每一轮选取的共识节点数,O可以表示每个共识节点的出块窗口时间除以2与1000的差;
需要说明的是,验证区块是否满足合理性时,必须同时满足全部条件才算验证通过,只要有其中一条不满足,验证都不能通过。
进一步地,一些实施例中,如果不满足公式(1),即不满足合法性时,则该区块将会被丢弃。另一些实施例中,如果满足公式(1),但不满足合理性标准中的至少一条,则该区块也会被丢弃。
本说明书的一个或多个实施例中,在所述确认合法时,对所述区块进行签名并广播时,还可以包括:判断在对所述区块进行签名并广播前是否收到过所述区块的子孙区块;确认收到过所述区块的子孙区块时,则同时对所述子孙区块进行签名后广播。具体的,在所述区块链中的共识节点接收区块,且验证区块满足合法性和合理性的所有条件后,对区块进行签名、广播的同时,会进一步的判断之前是否有收到过所述区块的子孙区块,如果收到过,则将所述区块和所述区块的子孙区块一并进行签名后广播;如果没有收到,则只对所述区块进行签名后广播。例如,在当前区块验证通过后,收到所述区块的两个子孙区块,则将所述区块和两个子孙区块一并进行签名后广播。
S3:区块链中的节点判断自己是否在出块窗口期,确认在所述出块窗口期时,将处于所述出块窗口期的节点作为出块节点。
本说明实施例中,出块窗口期也就是节点的出块时间,例如,3秒、1分钟、5分钟等。由于区块链中的出块节点可以在出块窗口期内以预设时间间隔连续产生多个区块,所以可以根据实际需求对出块窗口期进行设定。一些实施例中,在出块窗口期设定好后,每个出块节点严格按照设定的时间进行出块,若在出块窗口期未出块,并且在规定的时间内未产生任何块,则会被从出块节点名单中剔除,直至其向区块链表明再次开始生产区块。这样就可以排除不可靠的出块节点来最小化错过的区块数量,从而确保网络的顺畅运行。
本说明书一个实施例中,区块链中节点的出块顺序是随机的,当开始进行出块时,区块链中的节点首先会判断自己是否在出块窗口期。具体的,可以按照下面公式判断自己是否在出块窗口期:
I×10×1000<(N-L)%(n×10×1000)<(I+1)×10×1000 (2)
其中,I可以表示出块节点在所有节点中的位置,N可以表示当前系统时间,L可以表示上一轮转周期最后一个区块的产生时间。
本说明书另一个实施例中,区块链中节点的出块顺序是按照预设规则预先排号序的,当开始进行出块时,区块链中的节点首先也会根据相应的方式判断自己是否在出块窗口期。
需要说明的是,节点判断自己是否在出块窗口期的方式也可以根据其它方式或本领域人员熟悉的方式,本说明书对此不作限制。
进一步地,在区块链中的节点判断自己在出块窗口期时,会将所述节点作为出块节点,进行出块,然后签名并广播。具体的,在一个出块节点连续出块后,开始下一节点出块时,其余节点会验证自己是否在出块窗口期,若在,则该节点拥有出块权,会以预设时间间隔连续出块。如,节点1连续产生6个新区块,然后切换到下一个拥有出块权的节点连续产生之后的6个区块。
S4:当产生的区块的签名数达到预设数量时,确认所述区块获得区块链中节点的共识,将共识后的区块写入区块链。
预设数量是根据实际情况设定的。共识即多个节点的共同认识。写入区块链也叫上链。
本说明书一个实施例中,当所述区块的签名数达到设定的数量时,就确认该区块获得了共识。具体的,通过在区块链一群数量有限的节点中,随机选取一个节点作为出块节点,所述出块节点将该时段的交易打包成区块后用自己的私钥对该区块签名,并将其广播到其它节点,当出块节点收到设定数量的节点的签名后,则表明该区块完成了节点验证,即获得节点的共识。其中,设定数量可以是一群数量有限节点中至少三分之二的节点,也可以是四分之三的节点等,可以根据实际情况进行设定,对此不作限制。
本说明书一个实施例中,在确认所述区块获得区块链中节点的共识后,将所述区块写入区块链前,还需要判断所述区块是否满足入链规则。具体的,判断所述区块是否满足预设入链规则,所述预设入链规则包括所述区块的高度大于所述区块链中当前不可逆区块的高度,且所述区块的祖先区块是所述当前不可逆区块;确认满足时,则将所述区块写入区块链,并将所述区块更新为所述区块链中当前不可逆区块。另一个实施例中,判断所述区块是否满足预设入链规则,确认所述区块满足预设入链规则时,则将所述区块写入区块链,并将所述区块更新为所述区块链中当前不可逆区块;确认不满足预设入链规则时,则丢弃所述区块。
进一步地,一些实施例中,在将所述区块更新为所述区块链中当前不可逆区块后,包括:从所述当前不可逆区块开始查找子孙区块,判断所述子孙区块中是否存在更高的不可逆区块;确认存在时,则将所述更高的不可逆区块与所述当前不可逆区块之间的所有区块写入区块链,并将所述更高的不可逆区块更新为所述区块链中当前不可逆区块。具体的,例如,当一个区块签名数收集到3f+1个后,其中,f表示未响应或者出现故障的节点数量,则此区块最终被确认,但被确认区块上链前会进行进一步的判断。如果被确认区块的高度大于当前不可逆块高,并且当前不可逆区块为被确认区块的祖先区块,则此被确认区块成为新的不可逆区块,从此新的不可逆区块开始,查找子孙区块中更高不可逆新区块,如果存在更高不可逆区块,则继续切换更高的不可逆区块为当前最高不可逆区块,最终确定最高不可逆区块后,需要将新不可逆区块到原来已入链的不可逆区块之间的所有区块入链。
本说明书实施例提供的一种区块链共识的处理方法,出块节点通过在出块窗口期产生多个区块,且每产生一个区块后,进行签名后立即向其它节点进行广播,这样就可以在共识过程中使共识与出块过程同时进行,即一边进行共识,一边进行出块,不需要等到前一个区块确认上链后再进行下一轮的共识,使得共识与出块效率、扩展性、资源消耗和容错性方面更均衡高效,更接近甚至完全符合商业化的实时处理要求。
为了进一步来验证本方法的实用性和可行性,本说明书还提供了应用上述方案的一个具体实例,其中,当某个节点处于一轮出块窗口期时,其可以连续性的出多个块。如图4所示,图4是本说明书提供的一种区块链共识的处理的一个具体实施例的流程示意图,其包括出块提议、区块验证及签名、确认以及写入阶段。具体过程和步骤如下:
(1)出块提议:区块链中节点首先判断是否在出块窗口期,处于出块窗口期的节点不需要等待前一区块被确认后再出块,即可以连续出多个区块,签名后并广播到其它共识节点(共识节点1、共识节点2、共识节点3)。假设窗口期出块节点连续性的出了区块N和N+1,打包后签名,然后广播给其它的共识节点。
(2)区块验证及签名:其它共识节点(共识节点1、共识节点2、共识节点3)收到新的区块后会进行区块验证,如果验证通过,那么就会对区块再次签名,并将签名后的区块广播出去。
(3)确认:所有的共识节点会连续性的收到区块N,N+1的数据,其不需要等待区块N被确认,就可以对区块N+1进行共识,当任意一个共识节点收集到预设数量个签名后,则确认该区块成为最后不可逆区块,即获得共识。
(4)写入:将获得共识的区块写入区块链中。
上述实施例提供的方法,通过在出块窗口期连续产生多个区块,且每产生一个区块,进行签名后立即向其它节点进行广播,不需要等到前一个区块确认上链后再进行下一轮的出块与共识,即实现了共识与出块并行,使得共识与出块效率、扩展性、资源消耗和容错性方面更均衡高效,更接近甚至完全符合商业化的实时处理要求。
基于上述所述的一种区块链共识的处理方法,本说明书一个或多个实施例还提供一种区块链共识的处理装置。所述的装置可以包括使用了本说明书实施例所述方法的系统(包括分布式系统)、软件(应用)、模块、组件、服务器、客户端等并结合必要的实施硬件的装置。基于同一创新构思,本说明书实施例提供的一个或多个实施例中的装置如下面的实施例所述。由于装置解决问题的实现方案与方法相似,因此本说明书实施例具体的装置的实施可以参见前述方法的实施,重复之处不再赘述。以下所使用的,术语“单元”或者“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。
具体地,图5是本说明书提供的一种区块链共识的处理装置的一个实施例的模块结构示意图,如图5所示,本说明书提供的一种区块链共识的处理装置包括:区块产生模块121,区块验证模块122,出块判断模块123,确认共识模块124。其中,
区块产生模块121,可以用于区块链中的出块节点连续产生至少一个区块,并对所述区块签名后进行广播;
区块验证模块122,可以区块链中的共识节点接收区块,并根据预设规则验证所述区块是否合法;确认合法时,对所述区块进行签名并广播;
出块判断模块123,可以用于区块链中的节点判断自己是否在出块窗口期,确认在所述出块窗口期时,将处于所述出块窗口期的节点作为出块节点;
确认共识模块124,可以用于当产生的区块的签名数达到预设数量时,确认所述区块获得区块链中节点的共识,将共识后的区块写入区块链。
所述装置的另一个实施例中,所述区块验证模块122可以包括:
第一判断单元,用于判断所述区块是否满足预设合法规则;
第二判断单元,用于确定满足所述预设合法规则时,判断所述区块是否满足预设合理规则,其中,所述预设规则包括所述预设合法规则和所述预设合理规则。
所述装置的另一个实施例中,在所述确认合法时,对所述区块进行签名并广播时,包括:
第三判断单元,用于判断在所述对所述区块进行签名并广播前是否收到过所述区块的子孙区块;
子孙区块处理单元,用于确认收到过所述区块的子孙区块时,则同时对所述子孙区块进行签名后广播。所述装置的另一个实施例中,所述将共识后的区块写入区块链前,包括:
第四判断单元,用于判断所述区块是否满足预设入链规则,所述预设入链规则包括所述区块的高度大于所述区块链中当前不可逆区块的高度,且所述区块的祖先区块是所述当前不可逆区块;
区块写入单元,用于确认满足时,则将所述区块写入区块链,并将所述区块更新为所述区块链中当前不可逆区块。所述装置的另一个实施例中,所述将所述区块更新为所述区块链中当前不可逆区块后,包括:
查找判断单元,用于从所述当前不可逆区块开始查找子孙区块,判断所述子孙区块中是否存在更高的不可逆区块;
更新单元,用于确认存在时,则将所述更高的不可逆区块与所述当前不可逆区块之间的所有区块写入区块链,并将所述更高的不可逆区块更新为所述区块链中当前不可逆区块。本说明书实施例提供的一种区块链共识的处理装置,当区块链中某个节点处于一轮出块窗口期时,其可以连续产生多个区块,然后打包签名并广播给区块链中其它节点,当节点收到新的区块后会进行验证,如果验证通过,则对区块再次签名并广播,当区块收到的签名数达到预设数量时,则该区块成为最后不可逆区块,即确认该区块获得区块链中节点的共识,将所述区块写入区块链。采用本说明书提供的实施方案,在共识过程中,共识与出块解耦且同时进行,即一边进行共识,一边进行出块,不需要等到前一个区块确认上链后再进行下一轮的共识,这样,使得共识与出块效率、扩展性、资源消耗和容错性方面更均衡高效,更接近甚至完全符合商业化的实时处理要求。
需要说明的,上述所述的装置根据方法实施例的描述还可以包括其他的实施方式,具体的实现方式可以参照相关方法实施例的描述,在此不作一一赘述。
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
本说明书提供的上述实施例所述的方法可以通过计算机程序实现业务逻辑并记录在存储介质上,所述的存储介质可以计算机读取并执行,实现本说明书实施例所描述方案的效果。因此,本说明书还提供一种区块链共识的处理设备,包括处理器及用于存储处理器可执行指令的存储器,所述指令被所述处理器执行时实现包括以下步骤:
区块链中的出块节点连续产生至少一个区块,并对所述区块签名后进行广播;
区块链中的共识节点接收区块,并根据预设规则验证所述区块是否合法;确认合法时,对所述区块进行签名并广播;
区块链中的节点判断自己是否在出块窗口期,确认在所述出块窗口期时,将处于所述出块窗口期的节点作为出块节点;
当产生的区块的签名数达到预设数量时,确认所述区块获得区块链中节点的共识,将共识后的区块写入区块链。
所述存储介质可以包括用于存储信息的物理装置,通常是将信息数字化后再以利用电、磁或者光学等方式的媒体加以存储。所述存储介质有可以包括:利用电能方式存储信息的装置如,各式存储器,如RAM、ROM等;利用磁能方式存储信息的装置如,硬盘、软盘、磁带、磁芯存储器、磁泡存储器、U盘;利用光学方式存储信息的装置如,CD或DVD。当然,还有其他方式的可读存储介质,例如量子存储器、石墨烯存储器等等。
需要说明的,上述所述的设备根据方法实施例的描述还可以包括其他的实施方式。具体的实现方式可以参照相关方法实施例的描述,在此不作一一赘述。
本说明书实施例提供的上述一种区块链共识的处理方法、装置、设备可以在计算机中由处理器执行相应的程序指令来实现,如使用windows操作系统的c++语言在PC端实现、linux系统实现,或其他例如使用android、iOS系统程序设计语言在智能终端实现,以及基于量子计算机的处理逻辑实现等。本说明书提供一种区块链共识的处理系统的一个实施例中,图6是本说明书提供的一种区块链共识的处理系统的实施例的模块结构示意图,如图6所示,本说明书提供的一种区块链共识的处理系统可以包括处理器131以及用于存储处理器可执行指令的存储器132,处理器131和存储器132通过总线133完成相互间的通信;
所述处理器131用于调用所述存储器132中的程序指令,以执行上述区块链共识的处理方法实施例所提供的方法,例如包括:区块链中的出块节点连续产生至少一个区块,并对所述区块签名后进行广播;区块链中的共识节点接收区块,并根据预设规则验证所述区块是否合法;确认合法时,对所述区块进行签名并广播;区块链中的节点判断自己是否在出块窗口期,确认在所述出块窗口期时,将处于所述出块窗口期的节点作为出块节点;当产生的区块的签名数达到预设数量时,确认所述区块获得区块链中节点的共识,将共识后的区块写入区块链。
需要说明的是,说明书上述所述的系统根据相关方法实施例的描述还可以包括其他的实施方式,具体的实现方式可以参照方法实施例的描述,在此不作一一赘述。本申请中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于硬件+程序类实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本说明书实施例并不局限于必须是符合行业通信标准、标准计算机数据处理和数据存储规则或本说明书一个或多个实施例所描述的情况。某些行业标准或者使用自定义方式或实施例描述的实施基础上略加修改后的实施方案也可以实现上述实施例相同、等同或相近、或变形后可预料的实施效果。应用这些修改或变形后的数据获取、存储、判断、处理方式等获取的实施例,仍然可以属于本说明书实施例的可选实施方案范围之内。
在20世纪90年代,对于一个技术的改进可以很明显地区分是硬件上的改进(例如,对二极管、晶体管、开关等电路结构的改进)还是软件上的改进(对于方法流程的改进)。然而,随着技术的发展,当今的很多方法流程的改进已经可以视为硬件电路结构的直接改进。设计人员几乎都通过将改进的方法流程编程到硬件电路中来得到相应的硬件电路结构。因此,不能说一个方法流程的改进就不能用硬件实体模块来实现。例如,可编程逻辑器件(Programmable Logic Device,PLD)(例如现场可编程门阵列(Field Programmable GateArray,FPGA))就是这样一种集成电路,其逻辑功能由用户对器件编程来确定。由设计人员自行编程来把一个数字系统“集成”在一片PLD上,而不需要请芯片制造厂商来设计和制作专用的集成电路芯片。而且,如今,取代手工地制作集成电路芯片,这种编程也多半改用“逻辑编译器(logic compiler)”软件来实现,它与程序开发撰写时所用的软件编译器相类似,而要编译之前的原始代码也得用特定的编程语言来撰写,此称之为硬件描述语言(Hardware Description Language,HDL),而HDL也并非仅有一种,而是有许多种,如ABEL(Advanced Boolean Expression Language)、AHDL(Altera Hardware DescriptionLanguage)、Confluence、CUPL(Cornell University Programming Language)、HDCal、JHDL(Java Hardware Description Language)、Lava、Lola、MyHDL、PALASM、RHDL(RubyHardware Description Language)等,目前最普遍使用的是VHDL(Very-High-SpeedIntegrated Circuit Hardware Description Language)与Verilog。本领域技术人员也应该清楚,只需要将方法流程用上述几种硬件描述语言稍作逻辑编程并编程到集成电路中,就可以很容易得到实现该逻辑方法流程的硬件电路。
控制器可以按任何适当的方式实现,例如,控制器可以采取例如微处理器或处理器以及存储可由该(微)处理器执行的计算机可读程序代码(例如软件或固件)的计算机可读介质、逻辑门、开关、专用集成电路(Application Specific Integrated Circuit,ASIC)、可编程逻辑控制器和嵌入微控制器的形式,控制器的例子包括但不限于以下微控制器:ARC 625D、Atmel AT91SAM、Microchip PIC18F26K20以及Silicone Labs C8051F320,存储器控制器还可以被实现为存储器的控制逻辑的一部分。本领域技术人员也知道,除了以纯计算机可读程序代码方式实现控制器以外,完全可以通过将方法步骤进行逻辑编程来使得控制器以逻辑门、开关、专用集成电路、可编程逻辑控制器和嵌入微控制器等的形式来实现相同功能。因此这种控制器可以被认为是一种硬件部件,而对其内包括的用于实现各种功能的装置也可以视为硬件部件内的结构。或者甚至,可以将用于实现各种功能的装置视为既可以是实现方法的软件模块又可以是硬件部件内的结构。
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机。具体的,计算机例如可以为个人计算机、膝上型计算机、车载人机交互设备、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任何设备的组合。
虽然本说明书一个或多个实施例提供了如实施例或流程图所述的方法操作步骤,但基于常规或者无创造性的手段可以包括更多或者更少的操作步骤。实施例中列举的步骤顺序仅仅为众多步骤执行顺序中的一种方式,不代表唯一的执行顺序。在实际中的装置或终端产品执行时,可以按照实施例或者附图所示的方法顺序执行或者并行执行(例如并行处理器或者多线程处理的环境,甚至为分布式数据处理环境)。术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、产品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、产品或者设备所固有的要素。在没有更多限制的情况下,并不排除在包括所述要素的过程、方法、产品或者设备中还存在另外的相同或等同要素。第一,第二等词语用来表示名称,而并不表示任何特定的顺序。
为了描述的方便,描述以上装置时以功能分为各种模块分别描述。当然,在实施本说明书一个或多个时可以把各模块的功能在同一个或多个软件和/或硬件中实现,也可以将实现同一功能的模块由多个子模块或子单元的组合实现等。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
本发明是参照根据本发明实施例的方法、装置(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储、石墨烯存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
本领域技术人员应明白,本说明书一个或多个实施例可提供为方法、系统或计算机程序产品。因此,本说明书一个或多个实施例可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本说明书一个或多个实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本说明书的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
以上所述仅为本说明书一个或多个实施例的实施例而已,并不用于限制本本说明书一个或多个实施例。对于本领域技术人员来说,本说明书一个或多个实施例可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在权利要求范围之内。

Claims (11)

1.一种业务数据的上链方法,其特征在于,应用于区块链系统,所述区块链系统中包括多个区块链节点,所述区块链节点基于区块链网络中所有节点选举产生,所述方法包括:
所述区块链节点中的出块节点在接收业务数据后连续产生多个区块,并对所述区块签名后进行广播;所述区块中携带有业务数据;所述业务数据包括交易数据;
所述区块链节点中的共识节点接收区块,并根据预设规则验证所述区块是否合法;确认合法时,对所述区块进行签名并广播;所述区块链节点中的共识节点接收区块,并根据预设规则验证所述区块是否合法,包括:判断所述区块是否满足预设合法规则;确定满足所述预设合法规则时,判断所述区块是否满足预设合理规则,其中,所述预设规则包括所述预设合法规则和所述预设合理规则;所述判断所述区块是否满足预设合法规则,包括:判断所述区块是否满足下面公式:
I×10×1000<(N-L-O)%(n×10×1000)<(I+1)×10×1000-I×10×1000<(N-L+O)%(n×10×1000)<(I+1)×10×1000
其中,I表示出块节点在所有节点中的位置,N表示当前系统时间,L表示上一轮转周期最后一个区块的产生时间,n表示每一轮选取的共识节点数,O表示每个共识节点的出块窗口时间除以2与1000的差;
如果满足上述公式,则确定所述区块满足所述预设合法规则;如果不满足上述公式,则确定所述区块不满足所述预设合法规则,所述区块被丢弃;
所述区块链节点判断自己是否在出块窗口期,确认在所述出块窗口期时,将处于所述出块窗口期的节点作为出块节点;所述区块链节点按照下面公式判断自己是否在出块窗口期:
I×10×1000<(N-L)%(n×10×1000)<(I+1)×10×1000
其中,I表示出块节点在所有节点中的位置,N表示当前系统时间,L表示上一轮转周期最后一个区块的产生时间;
当产生的区块的签名数达到预设数量时,确认所述区块获得区块链中节点的共识,将共识后的区块写入区块链。
2.如权利要求1所述的一种业务数据的上链方法,其特征在于,所述预设合理规则包括:
当前区块的高度是否符合当前节点的时间窗口期;
当前区块的出块时间和上一个区块的出块时间是否满足出块时间间隔要求;
当前节点的最高不可逆区块是否为所述区块的祖先区块;
当前节点是否对其它相同高度的区块进行过签名。
3.如权利要求1所述的一种业务数据的上链方法,其特征在于,在所述确认合法时,对所述区块进行签名并广播时,包括:
判断在对所述区块进行签名并广播前是否收到过所述区块的子孙区块;
确认收到过所述区块的子孙区块时,则同时对所述子孙区块进行签名后广播。
4.如权利要求1所述的一种业务数据的上链方法,其特征在于,所述将共识后的区块写入区块链前,包括:
判断所述区块是否满足预设入链规则,所述预设入链规则包括所述区块的高度大于所述区块链中当前不可逆区块的高度,且所述区块的祖先区块是所述当前不可逆区块;
确认满足时,则将所述区块写入区块链,并将所述区块更新为所述区块链中当前不可逆区块。
5.如权利要求4所述的一种业务数据的上链方法,其特征在于,所述将所述区块更新为所述区块链中当前不可逆区块后,包括:
从所述当前不可逆区块开始查找子孙区块,判断所述子孙区块中是否存在更高的不可逆区块;
确认存在时,则将所述更高的不可逆区块与所述当前不可逆区块之间的所有区块写入区块链,并将所述更高的不可逆区块更新为所述区块链中当前不可逆区块。
6.一种业务数据的上链装置,包括多个区块链节点,所述区块链节点基于区块链网络中所有节点选举产生,所述装置包括:
区块产生模块,用于所述区块链节点中的出块节点在接收业务数据后连续产生多个区块,并对所述区块签名后进行广播;所述区块中携带有业务数据;所述业务数据包括交易数据;
区块验证模块,用于所述区块链节点中的共识节点接收区块,并根据预设规则验证所述区块是否合法;确认合法时,对所述区块进行签名并广播;所述区块链节点中的共识节点接收区块,并根据预设规则验证所述区块是否合法,包括:判断所述区块是否满足预设合法规则;确定满足所述预设合法规则时,判断所述区块是否满足预设合理规则,其中,所述预设规则包括所述预设合法规则和所述预设合理规则;所述判断所述区块是否满足预设合法规则,包括:判断所述区块是否满足下面公式:
I×10×1000<(N-L-O)%(n×10×1000)<(I+1)×10×1000-I×10×1000<(N-L+O)%(n×10×1000)<(I+1)×10×1000
其中,I表示出块节点在所有节点中的位置,N表示当前系统时间,L表示上一轮转周期最后一个区块的产生时间,n表示每一轮选取的共识节点数,O表示每个共识节点的出块窗口时间除以2与1000的差;
如果满足上述公式,则确定所述区块满足所述预设合法规则;如果不满足上述公式,则确定所述区块不满足所述预设合法规则,所述区块被丢弃;
出块判断模块,用于所述区块链节点判断自己是否在出块窗口期,确认在所述出块窗口期时,将处于所述出块窗口期的节点作为出块节点;所述区块链节点按照下面公式判断自己是否在出块窗口期:
I×10×1000<(N-L)%(n×10×1000)<(I+1)×10×1000
其中,I表示出块节点在所有节点中的位置,N表示当前系统时间,L表示上一轮转周期最后一个区块的产生时间;
确认共识模块,用于当产生的区块的签名数达到预设数量时,确认所述区块获得区块链中节点的共识,将共识后的区块写入区块链。
7.如权利要求6所述的一种业务数据的上链装置,其特征在于,在所述确认合法时,对所述区块进行签名并广播时,包括:
第三判断单元,用于判断在所述对所述区块进行签名并广播前是否收到过所述区块的子孙区块;
子孙区块处理单元,用于确认收到过所述区块的子孙区块时,则同时对所述子孙区块进行签名后广播。
8.如权利要求6所述的一种业务数据的上链装置,其特征在于,所述将共识后的区块写入区块链前,包括:
第四判断单元,用于判断所述区块是否满足预设入链规则,所述预设入链规则包括所述区块的高度大于所述区块链中当前不可逆区块的高度,且所述区块的祖先区块是所述当前不可逆区块;
区块写入单元,用于确认满足时,则将所述区块写入区块链,并将所述区块更新为所述区块链中当前不可逆区块。
9.如权利要求8所述的一种业务数据的上链装置,其特征在于,所述将所述区块更新为所述区块链中当前不可逆区块后,包括:
查找判断单元,用于从所述当前不可逆区块开始查找子孙区块,判断所述子孙区块中是否存在更高的不可逆区块;
更新单元,用于确认存在时,则将所述更高的不可逆区块与所述当前不可逆区块之间的所有区块写入区块链,并将所述更高的不可逆区块更新为所述区块链中当前不可逆区块。
10.一种业务数据的上链设备,其特征在于,包括多个区块链节点,所述区块链节点基于区块链网络中所有节点选举产生,所述设备包括处理器及用于存储处理器可执行指令的存储器,所述指令被所述处理器执行时实现包括以下步骤:
所述区块链节点中的出块节点在接收业务数据后连续产生多个区块,并对所述区块签名后进行广播;所述区块中携带有业务数据;所述业务数据包括交易数据;
所述区块链节点中的共识节点接收区块,并根据预设规则验证所述区块是否合法;确认合法时,对所述区块进行签名并广播;所述区块链节点中的共识节点接收区块,并根据预设规则验证所述区块是否合法,包括:判断所述区块是否满足预设合法规则;确定满足所述预设合法规则时,判断所述区块是否满足预设合理规则,其中,所述预设规则包括所述预设合法规则和所述预设合理规则;所述判断所述区块是否满足预设合法规则,包括:判断所述区块是否满足下面公式:
I×10×1000<(N-L-O)%(n×10×1000)<(I+1)×10×1000-I×10×1000<(N-L+O)%(n×10×1000)<(I+1)×10×1000
其中,I表示出块节点在所有节点中的位置,N表示当前系统时间,L表示上一轮转周期最后一个区块的产生时间,n表示每一轮选取的共识节点数,O表示每个共识节点的出块窗口时间除以2与1000的差;
如果满足上述公式,则确定所述区块满足所述预设合法规则;如果不满足上述公式,则确定所述区块不满足所述预设合法规则,所述区块被丢弃;
所述区块链节点判断自己是否在出块窗口期,确认在所述出块窗口期时,将处于所述出块窗口期的节点作为出块节点;所述区块链节点按照下面公式判断自己是否在出块窗口期:
I×10×1000<(N-L)%(n×10×1000)<(I+1)×10×1000
其中,I表示出块节点在所有节点中的位置,N表示当前系统时间,L表示上一轮转周期最后一个区块的产生时间;
当产生的区块的签名数达到预设数量时,确认所述区块获得区块链中节点的共识,将共识后的区块写入区块链。
11.一种业务数据的上链系统,其特征在于,包括至少一个处理器以及存储计算机可执行指令的存储器,所述处理器执行所述指令时实现权利要求1-5中任意一项所述方法的步骤。
CN201910175484.6A 2019-03-08 2019-03-08 一种业务数据的上链方法、装置及系统 Active CN109949157B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910175484.6A CN109949157B (zh) 2019-03-08 2019-03-08 一种业务数据的上链方法、装置及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910175484.6A CN109949157B (zh) 2019-03-08 2019-03-08 一种业务数据的上链方法、装置及系统

Publications (2)

Publication Number Publication Date
CN109949157A CN109949157A (zh) 2019-06-28
CN109949157B true CN109949157B (zh) 2022-03-18

Family

ID=67009380

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910175484.6A Active CN109949157B (zh) 2019-03-08 2019-03-08 一种业务数据的上链方法、装置及系统

Country Status (1)

Country Link
CN (1) CN109949157B (zh)

Families Citing this family (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112187462B (zh) * 2019-07-04 2022-04-29 北京新唐思创教育科技有限公司 数据处理方法、装置、电子设备及计算机可读介质
CN110298757B (zh) * 2019-07-05 2021-04-02 北京瑞策科技有限公司 涉及DPoS的共识方法及其装置
CN110474765B (zh) * 2019-07-29 2022-06-14 广东工业大学 一种基于委托权益证明扩展的量子区块链构建方法
CN110460661A (zh) * 2019-08-09 2019-11-15 成都薇米创想科技有限公司 一种基于区块链的共识算法
CN110708171B (zh) * 2019-12-13 2020-06-12 腾讯科技(深圳)有限公司 区块链共识投票方法、装置、设备以及存储介质
CN111130875B (zh) * 2019-12-20 2022-09-30 度小满科技(北京)有限公司 一种区块链的共识方法、装置、设备及存储介质
CN113032478B (zh) * 2019-12-24 2023-10-31 航天信息股份有限公司 区块链系统及数据上链方法、装置、设备和介质
CN111311414B (zh) * 2020-02-27 2023-12-08 杭州云象网络技术有限公司 一种基于一致性哈希算法的区块链多方共识方法
CN111526045B (zh) * 2020-03-25 2023-05-02 莘上信息技术(上海)有限公司 一种针对区块链的故障处理方法及系统
CN111506656B (zh) * 2020-04-20 2022-06-14 腾讯科技(深圳)有限公司 区块链系统的共识处理方法、装置及智能设备、存储介质
CN111522648B (zh) * 2020-07-03 2020-10-09 支付宝(杭州)信息技术有限公司 一种区块链的交易处理方法、装置及电子设备
CN112070610B (zh) * 2020-09-01 2023-08-29 中国联合网络通信集团有限公司 验证区块合法性的方法及节点、系统、电子设备、介质
CN112486518B (zh) * 2020-12-01 2024-03-12 北京微芯区块链与边缘计算研究院 共识算法装配方法及装置
CN112583908B (zh) * 2020-12-07 2024-04-16 合肥达朴汇联科技有限公司 应用于出块节点的区块链共识方法、系统、设备及介质
CN112600698B (zh) * 2020-12-07 2023-06-13 合肥达朴汇联科技有限公司 应用于非出块节点的区块链共识方法、系统、设备及介质
CN112541763B (zh) * 2020-12-11 2024-04-30 军工保密资格审查认证中心 一种区块链管理器的区块共识审批的方法及装置
CN113422681B (zh) * 2021-06-16 2022-02-01 国网电子商务有限公司 一种基于量子密码的区块链数字签名方法、装置及系统
CN113259180B (zh) * 2021-06-29 2021-09-21 北京航空航天大学 一种基于定时拍卖机制的联盟区块链共识方法及系统
CN113377798A (zh) * 2021-07-07 2021-09-10 支付宝(杭州)信息技术有限公司 一种区块链一致性处理方法、区块链节点和区块链系统
CN115187251B (zh) * 2022-09-13 2022-11-29 国网数字科技控股有限公司 一种融合公证人模式的中继链跨链交易方法和装置
CN117251889B (zh) * 2023-11-13 2024-03-01 腾讯科技(深圳)有限公司 区块链共识方法、相关装置和介质

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7421616B2 (en) * 2005-03-09 2008-09-02 International Business Machines Corporation Replicated state machine
US9690679B2 (en) * 2011-10-31 2017-06-27 Hewlett Packard Enterprise Development Lp Transaction commitment and replication in a storage system
CN108280646A (zh) * 2018-01-19 2018-07-13 中国科学院软件研究所 基于联盟链的区块链组链方法及区块链系统
CN108600353B (zh) * 2018-04-12 2021-01-12 北京天德科技有限公司 一种区块链节点的并行块同步方法
CN108846749B (zh) * 2018-05-31 2021-09-07 杭州溪塔科技有限公司 一种基于区块链技术的分片化的交易执行系统及方法
CN109165092B (zh) * 2018-07-10 2021-07-20 矩阵元技术(深圳)有限公司 一种基于有效算力贡献的共识方法、装置及系统
CN108846750B (zh) * 2018-08-01 2020-09-15 杭州复杂美科技有限公司 一种股权证明共识方法

Also Published As

Publication number Publication date
CN109949157A (zh) 2019-06-28

Similar Documents

Publication Publication Date Title
CN109949157B (zh) 一种业务数据的上链方法、装置及系统
CN110020860B (zh) 一种跨链资产转移方法、系统及计算机可读存储介质
CN107450981B (zh) 一种区块链共识方法及设备
CN109347787B (zh) 一种身份信息的识别方法及装置
KR20190085119A (ko) 서비스 데이터 프로세싱 및 검증을 위한 방법, 장치, 및 시스템
CN109391480A (zh) 一种数据存储方法、装置及电子设备
JPWO2018158936A1 (ja) ブロックチェーン管理装置、ブロックチェーン管理方法及びプログラム
CN112241506B (zh) 用户行为的回溯方法、装置、设备及系统
US11087371B2 (en) Blockchain-based invoice creation method apparatus, and electronic device
CN113630257B (zh) 一种共识方法、区块链系统和共识节点
CN114096966A (zh) 可扩展的、安全的、高效的和适应性强的分布式数字分类账交易网络
CN114971827A (zh) 一种基于区块链的对账方法、装置、电子设备及存储介质
CN112070608A (zh) 信息处理方法、装置、介质及电子设备
CN109376988B (zh) 一种业务数据的处理方法和装置
WO2021129005A1 (zh) 一种区块链状态变更交易追溯的方法及装置
CN112286968A (zh) 一种业务识别方法、设备、介质及电子设备
CN112258188A (zh) 一种区块链交易的处理方法、装置、设备及系统
CN110209347B (zh) 一种可追溯的数据存储方法
CN115099926A (zh) 基于区块链的信用数据分析方法、共享方法、装置及设备
CN112650715A (zh) 区块链系统中存储数据的方法、装置及相关产品
CN113761496A (zh) 一种基于区块链的身份校验方法及装置和电子设备
CN113673844A (zh) 一种信息反馈方法、装置及设备
CN111640016A (zh) 一种隐私交易的验证方法、装置、设备及介质
Thin et al. Formal Analysis of a PoS Blockchain
Egbedion et al. Exploring Blockchain Performance with CPUHEAVY Microbenchmark on Smart Contracts.

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
REG Reference to a national code

Ref country code: HK

Ref legal event code: DE

Ref document number: 40009455

Country of ref document: HK

GR01 Patent grant
GR01 Patent grant