CN117251889B - 区块链共识方法、相关装置和介质 - Google Patents

区块链共识方法、相关装置和介质 Download PDF

Info

Publication number
CN117251889B
CN117251889B CN202311505893.0A CN202311505893A CN117251889B CN 117251889 B CN117251889 B CN 117251889B CN 202311505893 A CN202311505893 A CN 202311505893A CN 117251889 B CN117251889 B CN 117251889B
Authority
CN
China
Prior art keywords
consensus
block
period
node
uplink
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
CN202311505893.0A
Other languages
English (en)
Other versions
CN117251889A (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.)
Tencent Technology Shenzhen Co Ltd
Original Assignee
Tencent 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 Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN202311505893.0A priority Critical patent/CN117251889B/zh
Publication of CN117251889A publication Critical patent/CN117251889A/zh
Application granted granted Critical
Publication of CN117251889B publication Critical patent/CN117251889B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/64Protecting data integrity, e.g. using checksums, certificates or signatures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2365Ensuring data consistency and integrity
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/602Providing cryptographic facilities or services
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • General Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • Data Mining & Analysis (AREA)
  • Health & Medical Sciences (AREA)
  • Computing Systems (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Computer And Data Communications (AREA)

Abstract

本公开提供了一种区块链共识方法、相关装置和介质。该区块链共识方法包括:获取目标共识节点的区块依赖关系图,区块依赖关系图包含目标共识节点在各个共识周期具有的、来自各个共识节点的等待共识的待上链区块、以及待上链区块与前一共识周期的各个待上链区块的依赖关系;在目标共识节点在目标共识周期具有的等待共识的待上链区块中选取主待上链区块,目标共识周期属于多个共识周期;在区块依赖关系图中,确定以主待上链区块为根节点的依赖树。本公开实施例能够提高区块链网络的共识和上链效率。本公开实施例可应用于区块链、结构化信息处理、安全技术等各种场景。

Description

区块链共识方法、相关装置和介质
技术领域
本公开涉及区块链领域,特别是涉及一种区块链共识方法、相关装置和介质。
背景技术
现有的区块链网络,包括多个共识节点。区块链网络的共识是指所包含的各个共识节点之间通过一定的协议和算法,就某个事务或状态达成一致意见,以保证整个系统的一致性和安全性的过程。也就是说,共识就是使各个共识节点认定相同的区块上链顺序,便于之后进行区块链上链操作。
现有技术中,每个共识周期中只能由一个共识节点生成待上链区块,并广播给其它共识节点投票。每个共识节点再根据其它共识节点反馈的投票情况决定是否产生证书。当证书达到一定数目,才算完成共识。因此,每个共识周期中只能有一个待上链区块完成共识。这时,打包区块的共识节点为主共识节点,接收区块进行共识的其它共识节点为从共识节点。只有主共识节点能上链区块,其它共识节点只能等待。这种共识方式对区块上链的顺序是确定的,各共识节点很容易达成共识。但是,这种方式上链效率不高,且共识效率依赖于主共识节点。因此,期待一种能够提高共识和上链效率的技术。
发明内容
本公开实施例提供了一种区块链共识方法、相关装置和介质,它能够提高区块链网络的共识和上链效率。
根据本公开的一方面,提供了一种区块链共识方法,用于区块链网络中的目标共识节点,在每个共识周期所述区块链网络中的每个共识节点生成待上链区块,发送给其它所述共识节点共识,从而所述目标共识节点在每个所述共识周期有来自多个所述共识节点的所述待上链区块等待共识,所述区块链共识方法包括:
获取所述目标共识节点的区块依赖关系图,所述区块依赖关系图包含所述目标共识节点在各个所述共识周期具有的、来自各个所述共识节点的等待共识的所述待上链区块、以及所述待上链区块与前一所述共识周期的各个所述待上链区块的依赖关系;
在所述目标共识节点在目标共识周期具有的等待共识的所述待上链区块中选取主待上链区块,所述目标共识周期属于多个所述共识周期;
在所述区块依赖关系图中,确定以所述主待上链区块为根节点的依赖树;
基于所述依赖树中各个所述待上链区块的所述依赖关系,确定各个所述待上链区块的上链顺序,从而按照所述上链顺序,将多个所述待上链区块上链。
根据本公开的一方面,提供了一种区块链共识装置,所述区块链共识装置位于区块链网络中的目标共识节点,在每个共识周期所述区块链网络中的每个共识节点生成待上链区块,发送给其它所述共识节点共识,从而所述目标共识节点在每个所述共识周期有来自多个所述共识节点的所述待上链区块等待共识,所述区块链共识装置包括:
获取单元,用于获取所述目标共识节点的区块依赖关系图,所述区块依赖关系图包含所述目标共识节点在各个所述共识周期具有的、来自各个所述共识节点的等待共识的所述待上链区块、以及所述待上链区块与前一所述共识周期的各个所述待上链区块的依赖关系;
区块选取单元,用于在所述目标共识节点在目标共识周期具有的等待共识的所述待上链区块中选取主待上链区块,所述目标共识周期属于多个所述共识周期;
第一确定单元,用于在所述区块依赖关系图中,确定以所述主待上链区块为根节点的依赖树;
上链单元,用于基于所述依赖树中各个所述待上链区块的所述依赖关系,确定各个所述待上链区块的上链顺序,从而按照所述上链顺序,将多个所述待上链区块上链。
可选地,所述获取单元具体用于:
获取在各个所述共识周期各个所述共识节点的所述待上链区块;
轮流将获取的所述待上链区块作为待考察区块,针对所述待考察区块,确定多个所述共识节点中为所述待考察区块颁发证书的颁证共识节点;
将所述待考察区块、与来自前一所述共识周期中所述颁证共识节点的所述待上链区块确定为具有依赖关系;
基于获取的所述待上链区块、和确定的所述依赖关系,生成所述区块依赖关系图。
可选地,所述获取单元还具体用于:
将所述待考察区块发送到所述区块链网络中的其它所述共识节点投票,以便每个所述共识节点投票后将所述投票结果通知到所述区块链网络中的每个所述共识节点,每个所述共识节点根据通知到的多个所述共识节点的所述投票结果颁发所述证书;
确定为所述待考察区块颁发所述证书的所述共识节点,作为所述颁证共识节点。
可选地,所述获取单元还具体用于:
将所述待考察区块用所述目标共识节点的密钥签名,发送到其它所述共识节点,以便其它所述共识节点接收到所述签名后,用所述目标共识节点的所述密钥验签,将所述待考察区块存储到其它所述共识节点的内存池,并用所述待考察区块中的摘要对所述内存池中的所述待考察区块进行验证,如果验证成功,则生成投票结果,向所述区块链网络中的其它所述共识节点广播。
可选地,所述区块链网络包含3f+1个所述共识节点,其中,f为正整数;
所述获取单元还具体用于:
确定至少接收到2f+1个所述共识节点的所述投票结果;
为所述待考察区块颁发所述证书。
可选地,所述获取单元还具体用于:
从所述目标共识节点存储的第一数据结构中,获取在各个所述共识周期各个所述共识节点的所述待上链区块,其中,所述第一数据结构包含所述共识周期、与所述共识周期下的多个所述待上链区块的映射,所述待上链区块包含前一所述共识周期中为所述待上链区块颁发的多个所述证书;
所述获取单元还具体用于:
基于所述待考察区块中的多个所述证书,确定所述颁证共识节点。
可选地,所述证书中包含颁发所述证书的证书共识周期、和颁发所述证书的所述共识节点;
所述获取单元还具体用于:
确定所述证书共识周期是所述待上链区块所在的所述共识周期的上一个共识周期;
将颁发所述证书的所述共识节点确定为所述颁证共识节点。
可选地,所述区块链网络包含3f+1个所述共识节点,其中,f为正整数;所述目标共识周期通过以下方式在多个所述共识周期中确定:
将所述目标共识节点的具有等待共识的所述待上链区块的多个所述共识周期按时间顺序排序,得到多个所述共识周期的序号;
将所述共识周期的序号模第一值后的余数为同一第二值的所述共识周期,确定为候选共识周期,其中,所述第一值为正整数;
将所述候选共识周期中至少具有2f+1个等待上链的所述待上链区块、与当前共识周期间隔时间最小的所述候选共识周期,作为所述目标共识周期。
可选地,所述区块选取单元具体用于;
将所述目标共识周期的所述序号与所述区块链网络中的共识节点数目进行模运算,将所述模运算的余数作为所述待上链区块的索引,在所述目标共识节点在目标共识周期具有的等待共识的多个所述待上链区块中,确定候选待上链区块;
如果所述候选待上链区块在所述目标共识周期的前一共识周期中得到的证书数达到f+1以上,将所述候选待上链区块确定为所述主待上链区块。
可选地,在所述如果所述候选待上链区块在所述目标共识周期的前一共识周期中得到的证书数达到f+1以上,将所述候选待上链区块确定为所述主待上链区块之后,所述区块链共识装置还包括:
第二确定单元,用于如果所述候选待上链区块在所述目标共识周期的前一共识周期中得到的证书数未达到f+1以上,则顺序确定所述候选待上链区块之后的各个所述待上链区块在所述目标共识周期的前一共识周期中得到的所述证书数,如果得到的所述证书数达到f+1以上,将所述待上链区块确定为所述主待上链区块。
可选地,所述第一确定单元具体用于:
将待分解区块初始化为所述主待上链区块,将待考察共识周期初始化为所述目标共识周期;
执行第一过程,所述第一过程包括:在所述区块依赖关系图中,查找在所述待考察共识周期的前一共识周期中与所述待分解区块具有所述依赖关系的各个所述待上链区块,用每个所述待上链区块轮流更新所述待分解区块,用所述前一共识周期更新所述待考察共识周期,重复第一过程,从而得到所述以所述主待上链区块为所述根节点的所述依赖树。
可选地,所述第一确定单元还具体用于:
获取与当前共识周期间隔最小的、所述待上链区块都已上链的截止共识周期;
重复所述第一过程,直到所述前一共识周期为所述截止共识周期,从而得到以所述主待上链区块为所述根节点的所述依赖树。
可选地,所述第一确定单元还具体用于:
从所述目标共识节点的内存池中,获取与当前共识周期间隔最小的、所述待上链区块都已上链的截止共识周期;
在按照所述上链顺序,将多个所述待上链区块上链之后,所述区块链共识装置还包括:
更新单元,用于用所述目标共识周期,更新所述内存池中的所述截止共识周期。
可选地,所述获取单元还具体用于:在所述目标共识节点的具有等待共识的所述待上链区块的多个所述共识周期中,将每连续L个所述共识周期组合成一个超周期,在每个所述超周期的最后一个所述共识周期中获取所述目标共识节点的所述区块依赖关系图,其中,L为正整数;
所述目标共识周期是每个所述超周期中预定顺序位的所述共识周期;
所述截止共识周期是当前共识周期所在的所述超周期的前一个超周期中的所述目标共识周期。
可选地,所述依赖树以所述主待上链区块为所述根节点,以各个所述共识周期为所述依赖树的各个层,以所述共识周期中的各个所述待上链区块为所述层中的节点;
所述上链单元具体用于:
将待处理层初始化为所述依赖树的最下一层,并初始化排序列表为空集;
执行第二过程,所述第二过程包括:从所述待处理层的未取出节点中,取出与所述待处理层的上一层的同一节点具有依赖关系的至少一个所述节点,放入所述排序列表;将所述上一层的所述同一节点放入所述排序列表;如果所述上一层中尚有所述节点未取出,则返回从所述待处理层的未取出节点中,取出与所述待处理层的上一层的同一节点具有依赖关系的至少一个所述节点,放入所述排序列表的步骤;在将任何一个所述节点取出并放入所述排序列表时,如果同一层中的所述节点已都取出,则用所述节点都已取出的所述层的上一层更新所述待处理层,重复所述第二过程,直到取出所述根节点;
将所述排序列表中的所述节点的顺序作为所述上链顺序。
可选地,所述待上链区块由所述共识节点通过以下方式生成:
从客户端接收待上链事务,放入所述共识节点的内存池;
当所述内存池中的待上链事务数目达到第一阈值,或者与生成上一个所述待上链区块的时间间隔达到第二阈值时,将所述内存池中的所述待上链事务取出,打包成所述待上链区块。
根据本公开的一方面,提供了一种电子设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现如上所述的区块链共识方法。
根据本公开的一方面,提供了一种计算机可读存储介质,所述存储介质存储有计算机程序,所述计算机程序被处理器执行时实现如上所述的区块链共识方法。
根据本公开的一方面,提供了一种计算机程序产品,该计算机程序产品包括计算机程序,所述计算机程序被计算机设备的处理器读取并执行,使得该计算机设备执行如上所述的区块链共识方法。
本公开实施例针对在一个共识周期要上多个待上链区块,这时各个共识节点如何达成统一的区块上链顺序。为了提高共识和上链效率,让每个共识周期中每个共识节点都生成一个待上链区块,同时广播给其它节点进行共识(即进行投票和产生证书)。这样,假设共识节点共有N个(N为大于1的正整数),每个共识周期中一个共识节点中就存了来自N个共识节点对应的N个要上链的待上链区块。然而,在一个共识周期要上N个区块,如此一来,各个共识节点就不容易达成统一的区块上链顺序,从而影响了共识效率,也使得上链效率和准确性较低。因此,本公开实施例将在多个共识周期各自等待共识的多个待上链区块,组成一个区块依赖关系图,这时,所有共识节点得到的这个区块依赖关系图是一致的。在该区块依赖关系图中,确定主待上链区块,并确定以主待上链区块为根节点的依赖树。当得到依赖树后,就可以基于依赖树中各个待上链区块的依赖关系,确定各个待上链区块的上链顺序。由于所有共识节点得到的这个区块依赖关系图是一致的,上述确定上链顺序的规则也是一致的,因此能够做到上链前的一致共识。同时,本公开实施例的方法不依赖于一个周期一个周期地共识上链单个区块,而是一个共识周期能共识多个待上链区块并上链,提高了共识和上链效率。并且,由于按照待上链区块的依赖关系确定上链顺序,使确定的上链顺序具有正确的前后执行顺序,有效提高了上链正确性。
本公开的其他特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本公开而了解。本公开的目的和其他优点可通过在说明书、权利要求书以及附图中所特别指出的结构来实现和获得。
附图说明
附图用来提供对本公开技术方案的进一步理解,并且构成说明书的一部分,与本公开的实施例一起用于解释本公开的技术方案,并不构成对本公开技术方案的限制。
图1是根据本公开的实施例的区块链共识方法应用的系统的体系架构图;
图2A-图2D是区块链上链方法应用于智能家居进行温度上链到区块链的界面示意图;
图3是根据本公开的一个实施例的由目标共识节点执行的区块链共识方法的流程图;
图4是图3中的步骤310关于一个目标共识节点对应的区块依赖关系图的示意图;
图5是图3中的步骤310关于获取目标共识节点的区块依赖关系图的流程图;
图6是图3中的步骤310关于生成待上链区块的流程图;
图7A是图6中的步骤620基于内存池中的待上链事务数目生成待上链区块的示意图;
图7B是图6中的步骤620基于与生成上一个待上链区块的时间间隔生成待上链区块的示意图;
图8是图5中的步骤520关于针对待考察区块确定颁证共识节点的流程图;
图9是图8中的步骤810关于将待考察区块发送到区块链网络中的其它共识节点投票的示意图;
图10是图8中的步骤810关于根据通知到的多个共识节点的投票结果颁发证书的示意图;
图11是图5中的步骤520基于待上链区块确定为待考察区块颁发证书的颁证共识节点的流程图;
图12是图11中的步骤1110关于第一数据结构的结构示意图;
图13A是图11中的步骤1110关于待上链区块的结构示意图;
图13B是图11中的步骤1110关于包含共识节点的待上链区块的结构示意图;
图14A是图11中的步骤1120关于证书的结构示意图;
图14B是图11中的步骤1120关于包含区块摘要值和投票集的证书的结构示意图;
图15是图11中的步骤1120基于待考察区块中的多个证书确定颁证共识节点的流程图;
图16是图3中的步骤320关于在多个共识周期确定目标共识周期的示意图;
图17是图3中的步骤320关于选取主待上链区块的流程图;
图18是本公开的另一个实施例在步骤1720中证书数未达到f+1以上时确定主待上链区块的示意图;
图19是图3中的步骤330关于确定以主待上链区块为根节点的依赖树的流程图;
图20是图19中的步骤1920关于第一过程的流程图;
图21是图20中的步骤2030关于重复第一过程得到依赖树的流程图;
图22是图21中的步骤2110关于更新内存池中的截止共识周期的示意图;
图23是图3中的步骤310关于确定超周期的示意图;
图24是图3中的步骤330关于依赖树的结构示意图;
图25是图3中的步骤340基于依赖树确定各个待上链区块的上链顺序的流程图;
图26是图25中的步骤2520基于依赖树执行第二过程的过程示意图;
图27A是图3中的步骤340基于依赖树确定各个待上链区块的上链顺序的一个具体示意图;
图27B是图3中的步骤340基于依赖树确定各个待上链区块的上链顺序的另一个具体示意图;
图28是本公开实施例的区块链共识方法的一个实施细节图;
图29是根据本公开一个实施例的位于目标共识节点的区块链共识装置的模块图;
图30是根据本公开的实施例执行图3所示的区块链共识方法的终端结构图;
图31是根据本公开的实施例执行图3所示的区块链共识方法的服务器结构图。
具体实施方式
为了使本公开的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本公开进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本公开,并不用于限定本公开。
需要说明的是,在本公开的各个具体实施方式中,当涉及到需要根据目标对象属性信息或属性信息集合等与目标对象特性相关的数据进行相关处理时,都会先获得目标对象的许可或者同意,而且,对这些数据的收集、使用和处理等,都会遵守相关法律法规和标准。此外,当本公开实施例需要获取目标对象属性信息时,会通过弹窗或者跳转到确认页面等方式获得目标对象的单独许可或者单独同意,在明确获得目标对象的单独许可或者单独同意之后,再获取用于使本公开实施例能够正常运行的必要的目标对象相关数据。
对本公开实施例进行进一步详细说明之前,对本公开实施例中涉及的名词和术语进行说明,本公开实施例中涉及的名词和术语适用于如下的解释:
区块链:区块链是分布式数据存储、共识机制、加密算法等计算机技术的新型应用模式。区块链它本质上是一个去中心化的数据库,是一串使用密码学方法相关联产生的数据块,每一个数据块中包含了一批交易的信息,用于验证其信息的有效性(防伪)和关联前一区块。目前很多应用开始使用区块链网络,因为区块链网络去中心化的特性具有以下优势:容错性能力强、不易被攻击、数据无法被篡改,这使得对象信任部署了区块链的应用,链外对象在区块链上的活动日益增加,越来越多的事务需要做上链处理。
共识节点:是指在区块链网络中负责进行共识算法运算和验证事务的节点。共识节点是网络中的一部分,其主要任务是确保网络中的事务和区块的一致性,并达成共识。
外部节点:是指用于生成待上链事务的节点。外部节点产生待记录到区块链上的事务后,要委托共识节点记录到区块链。外部节点在区块链网络(如联盟链共识网络)的外部。
如图1所示,区块链网络包括多个共识节点110。事务生成节点120就是区块链网络外的一个外部节点。事务生成节点120产生待记录到区块链上的事务后,要委托共识节点110记录到区块链上。一般来说,会指定其中一个共识节点将事务打包成区块,发给其它共识节点共识后记录到区块链上。打包区块的共识节点为主共识节点,接收区块进行共识的其它共识节点为从共识节点。
区块链网络的共识是指所包含的各个共识节点之间通过一定的协议和算法,就某个事务或状态达成一致意见,以保证整个系统的一致性和安全性的过程。也就是说,共识就是使各个共识节点认定相同的区块上链顺序,便于之后进行区块链上链操作。
现有技术中,每个共识周期中只能由一个共识节点生成待上链区块,并广播给其它共识节点投票。每个共识节点再根据其它共识节点反馈的投票情况决定是否产生证书。当证书达到一定数目,才算完成共识。因此,每个共识周期中只能有一个待上链区块完成共识。这时,打包区块的共识节点为主共识节点,接收区块进行共识的其它共识节点为从共识节点。只有主共识节点能上链区块,其它共识节点只能等待。这种共识方式对区块上链的顺序是确定的,各共识节点很容易达成共识。但是,这种方式上链效率不高,且共识效率依赖于主共识节点。
为了提高共识效率以提高上链效率,可以让每个共识周期中每个共识节点都生成一个待上链区块,同时广播给其它节点进行共识(即进行投票和产生证书)。这样,假设共识节点共有N个(N为大于1的正整数),每个共识周期中一个共识节点中就存了来自N个共识节点对应的N个要上链的待上链区块。然而,在一个共识周期要上N个区块,如此一来,各个共识节点就不容易达成统一的区块上链顺序,从而影响了共识效率,也使得上链效率和准确性较低。
本公开实施例应用的系统体系构架及场景说明
参见图1所示的区块链共识系统,它包括区块链网络和外部网络。这时的区块链网络是指对待上链事务进行共识后在区块链上进行上链的网络,它包括多个共识节点110。外部网络是指产生待上链的事务、不在区块链上进行上链的网络,它包括多个事务生成节点120。区块链的外部网络可以连接到区块链网络之外的其他网络或系统。在区块链技术中,外部网络是与区块链网络进行通信和交互的通道。共识节点110即区块链节点。事务生成节点120不需要参与上链共识,主要用于产生待上链事务。
共识节点110或事务生成节点120可以为区块链网络中的服务器,也可以为接入区块链网络中的用户终端,这里对共识节点110和事务生成节点120的具体形式不做限定。还可以理解的是,图1所示的区块链网络和外部网络可以处于不同的网络环境。例如,通常来说,事务生成节点120部署在处于公网的外部网络中,而运行区块链共识协议的共识节点110则部署在私网的共识网络中。共识节点110和事务生成节点120可以通过路由节点进行交互,共识节点110和事务生成节点120也可以不通过路由节点而直接进行数据传输。需要说明的是,由于共识网络处于相对安全的私有云中,其互相访问本就有共识机制保证安全,不需要额外加入身份管理和网络控制。而事务生成节点120处于公共网络中,可能会被其他不确定的网络终端访问,因此事务生成节点120以及其他可能的节点接入共识网络中的行为需要被严格控制。
本公开实施例可以应用在多种场景下,例如图2A-图2D所示的在智能家居APP中将室内空调温度上链到区块链的场景。
目标对象在房间1、房间2和房间3中都安装了空调设备,且每个房间的空调设备都与终端210通信连接。终端是指目标对象安装有智能家居APP的设备。与终端210通信连接的空调设备在启动过程中,每隔预定时间段或预定时间点将当前的空调温度发送到终端210。其中,预定时间段可以是30秒、1分钟、5分钟、10分钟等。预定时间点可以是10:00、12:00、14:00等。预定时间段或预定时间点可以根据目标对象查看室内的空调温度的频率来确定。
如图2A所示,目标对象的房间1中的空调设备在上午10:00监测到的空调温度为26度(即摄氏度),且上午10:00为将当前的空调温度发送到终端210的预定时间点。这时,终端210的界面显示“10:00房间1中空调温度:26度”的信息。因此,当目标对象想要将当前的空调温度数据上链到智能家居APP对应的区块链网络,目标对象可以点击当前界面上的“区块链小程序”按键,则终端210的界面变为如图2B所示。
在图2B中,目标对象在10:05点击当前界面上的“区块链小程序”按键后,终端210在界面显示将当前的空调温度数据上传的确认窗口。确认窗口为目标对象提供一个确认上传数据的机会,以确保目标对象意识到并确认将数据上链到到智能家居软件的区块链网络中。这时,终端210界面的确认窗口中显示“是否将当前房间1的空调温度记录到区块链”。因此,当目标对象想要将当前房间1的空调温度记录到区块链,目标对象可以点击当前界面上的“是”按键,则终端210的界面变为如图2C所示。
在图2C中,当目标对象点击当前界面上的“是”按键后,终端210根据将当前的空调温度数据上链到智能家居APP的区块链网络的需求,生成空调温度上链事务,并请求共识网络对该事务进行上链。这时,终端210在当前界面显示“等待上链...”。在终端210将该事务上链完成后,终端210的界面变为如图2D所示。
在图2D中,终端210在完成对当前的空调温度数据上链后,在终端210的界面显示“上链完成”的提示信息。
需要强调,本公开实施例可以应用在多种场景下,图2A至图2D示出了本公开实施例的其中一类业务场景。本公开实施例中区块链共识方法可以应用的业务场景,可以包括,但不限于上述举出的具体实施例。
本公开实施例的总体说明
根据本公开的一个实施例,提供了一种区块链共识方法。
本公开实施例的区块链共识方法一般应用在需要高效、可扩展和安全的区块链系统的场景中,例如图2A-图2D所示的在智能家居APP中将室内空调温度共识上链到区块链的场景。
本公开实施例针对在一个共识周期要上多个待上链区块的应用场景,这时各个共识节点如何达成统一的区块上链顺序。为了提高共识和上链效率,让每个共识周期中每个共识节点都生成一个待上链区块,同时广播给其它节点进行共识(即进行投票和产生证书)。这样,假设共识节点共有N个(N为大于1的正整数),每个共识周期中一个共识节点中就存了来自N个共识节点对应的N个要上链的待上链区块。然而,在一个共识周期要上N个区块,如此一来,各个共识节点就不容易达成统一的区块上链顺序,从而影响了共识效率,也使得上链效率和准确性较低。因此,本公开实施例所提供的区块链共识方法,不依赖于一个周期一个周期地共识上链单个区块,而是一个共识周期能共识多个待上链区块并上链,提高了共识和上链效率。并且,由于按照待上链区块的依赖关系确定上链顺序,使确定的上链顺序具有正确的前后执行顺序,有效提高了上链正确性。
本公开实施例的区块链共识方法可以在服务器或终端执行,也可以部分在服务器执行,部分在终端执行。
参照图3,根据本公开一个实施例的区块链共识方法,应用于区块链网络中的目标共识节点,在每个共识周期区块链网络中的每个共识节点生成待上链区块,发送给其它共识节点共识,从而目标共识节点在每个共识周期有来自多个共识节点的待上链区块等待共识,该区块链共识方法可以包括,但不限于下述步骤310至步骤340。
步骤310、获取目标共识节点的区块依赖关系图,区块依赖关系图包含目标共识节点在各个共识周期具有的、来自各个共识节点的等待共识的待上链区块、以及待上链区块与前一共识周期的各个待上链区块的依赖关系;
步骤320、在目标共识节点在目标共识周期具有的等待共识的待上链区块中选取主待上链区块,目标共识周期属于多个共识周期;
步骤330、在区块依赖关系图中,确定以主待上链区块为根节点的依赖树;
步骤340、基于依赖树中各个待上链区块的依赖关系,确定各个待上链区块的上链顺序,从而按照上链顺序,将多个待上链区块上链。
该步骤310-步骤340的实施例的好处是,将在多个共识周期各自等待共识的多个待上链区块,组成一个区块依赖关系图,这时,所有共识节点得到的这个区块依赖关系图是一致的。在该区块依赖关系图中,确定主待上链区块,并确定以主待上链区块为根节点的依赖树。当得到依赖树后,就可以基于依赖树中各个待上链区块的依赖关系,确定各个待上链区块的上链顺序。由于所有共识节点得到的这个区块依赖关系图是一致的,上述确定上链顺序的规则也是一致的,因此能够做到上链前的一致共识,从而提高了共识和上链的效率。
上述步骤310-步骤340是针对区块链共识方法应用于区块链网络中的目标共识节点的实现过程。下面是对步骤310-步骤340的详细描述。
步骤310的详细描述
在步骤310中,获取目标共识节点的区块依赖关系图,区块依赖关系图包含目标共识节点在各个共识周期具有的、来自各个共识节点的等待共识的待上链区块、以及待上链区块与前一共识周期的各个待上链区块的依赖关系。
目标共识节点是指区块链网络中获取来自各个共识节点的等待共识的待上链区块的节点。目标共识节点可以是一个独立的设备,如单独的计算机或服务器,也可以是独立设备的一部分,例如服务器上划分出的一个虚拟机。
区块依赖关系图是指区块链网络中,共识节点在各个共识周期的所有待上链区块之间的依赖关系的图形表示。区块关系依赖图通常由区块链浏览器或其他类似工具生成,可以帮助用户了解每个区块的来源和验证过程,以及整个区块链网络的状态和发展趋势。
在区块链网络中,共识是为了确保所有参与节点的账本数据的一致性和可信性。共识周期是指参与的共识节点从一个新的区块产生到下一个新的区块产生所需要的时间。一个区块依赖关系图是由多个共识周期的多个待上链区块构成的图形表示。那么,目标共识节点的区块依赖关系图是指包含目标共识节点在各个共识周期具有的、来自各个共识节点的等待共识的待上链区块、以及待上链区块与前一共识周期的各个待上链区块的依赖关系的图形表示。
区块依赖关系图是一个有向无环图(Directed Acyclic Graph,DAG)。DAG是数据模型及其相互连接的可视化表示。DAG的关键组成部分是节点,它是定向链接的,并且不形成循环。如图4所示,区块链网络中包括共识节点N1、共识节点N2、共识节点N3、和共识节点N4。这时的区块依赖关系图是指目标共识节点为共识节点N1的关系图,那么,区块依赖关系图为共识节点N1在4个共识周期,分别获取的来自多个共识节点的等待共识待上链区块构成的图形表示。因此,这时的区块依赖关系图包含共识节点N1在各个共识周期具有的、来自各个共识节点的等待共识的待上链区块、以及待上链区块与前一共识周期的各个待上链区块的依赖关系。例如,共识节点N1在4个共识周期的待上链区块包括:待上链区块B11、待上链区块B12、待上链区块B13、和待上链区块B14。其中,第2共识周期的待上链区块B12与第1共识周期的待上链区块B21(来自共识节点N2)、和第1共识周期的待上链区块B31(来自共识节点N3)具有依赖关系。第4共识周期的待上链区块B24与第3共识周期的待上链区块B13(来自共识节点N1)、第3共识周期的待上链区块B23(来自共识节点N2)、和第3共识周期的待上链区块B43(来自共识节点N4)具有依赖关系。
在一个实施例中,如图5所示,步骤310包括:
步骤510、获取在各个共识周期各个共识节点的待上链区块;
步骤520、轮流将获取的待上链区块作为待考察区块,针对待考察区块,确定多个共识节点中为待考察区块颁发证书的颁证共识节点;
步骤530、将待考察区块、与来自前一共识周期中颁证共识节点的待上链区块确定为具有依赖关系;
步骤540、基于获取的待上链区块、和确定的依赖关系,生成区块依赖关系图。
下面对步骤510至步骤540进行详细描述。
在步骤510中,待上链区块是指各个共识节点在各个共识周期中,生成的等待被添加到区块链中的区块。待上链区块通常由外部的事务生成节点120通过共识算法产生。一个待上链区块被创建后,它会被广播到网络中的其他节点进行验证和确认。如果一个待上链区块被共识成功,那么,这个待上链区块就会被添加到区块链中,成为区块链的一部分。
在一个实施例中,如图6所示,待上链区块由共识节点通过以下方式生成:
步骤610、从客户端接收待上链事务,放入共识节点的内存池;
步骤620、当内存池中的待上链事务数目达到第一阈值,或者与生成上一个待上链区块的时间间隔达到第二阈值时,将内存池中的待上链事务取出,打包成待上链区块。
下面对步骤610至步骤620进行详细描述。
在步骤610中,事务是指需要被共识节点执行并记录到区块链的操作,例如某企业发票报销事务、智能家居的空调温度事务等。事务可以用于对共识节点对应的区块链账本进行更新和修改,例如转账、合约调用等。待上链事务是指需要上链到共识节点对应的区块链上的事务。
客户端接收事务生成节点120生成的待上链事务。事务生成节点120可以是一个独立的设备,如单独的计算机或服务器,也可以是独立设备的一部分,例如服务器上划分出的一个虚拟机。
内存池是指为共识节点保存待上链事务的一个存储区域。那么,共识节点的内存池是指共识节点在进行事务验证和打包区块之前,临时存储待上链事务的内存区域。客户端接收到待上链事务后,放入共识节点的内存池。
在一个实施例中,内存池中存储待上链事务的位置是随机的。也就是说,共识节点可以将待上链事务放入内存池中的随机位置。
在另一个实施例中,内存池中存储的事务可以按照预定顺序进行排序。其中,预定顺序可以基于待上链事务的接收时间戳进行设定,也可以基于待上链事务的大小进行设定。例如,当预定顺序为基于待上链事务的接收时间戳进行设定,这时,内存池中的待上链事务可以根据它们进入内存池的接收时间戳进行排序。因此,对于较早进入内存池的待上链事务可以被优先处理,以减少事务处理的等待时间。另外,当预定顺序为基于待上链事务的大小进行设定,这时,内存池中的待上链事务可以根据事务自身的大小进行排序。因此,对于占用空间较小的待上链事务,因为更容易被打包进区块中,可以使生成的待上链区块能够容纳更多的待上链事务。例如,共识节点的内存池中存储了待上链事务W1、待上链事务W1对应的接收时间戳12:00:05、待上链事务W2、待上链事务W2对应的接收时间戳12:08:05等。
在步骤620中,第一阈值是指打包一个待上链区块所需的待上链事务的最大数目。第一阈值可以根据对应的共识节点的需求灵活进行调整,在此不作具体限定。例如,第一阈值为4、6等。
第二阈值是指打包一个新的待上链区块与生成上一个待上链区块的时间间隔的最大值。第二阈值可以根据对应的共识节点的需求灵活进行调整,在此不作具体限定。例如,第二阈值为30秒、5分钟等。需要说明的是,第一阈值和第二阈值设置的越小,则一个待上链区块中包含的事务也相对减少,这时,可以有效加快事务的确认速度,避免网络拥塞和延迟,从而避免不同共识节点的负载不均衡。
在一个实施例中,当内存池中的待上链事务数目达到第一阈值,将内存池中的待上链事务取出,打包成待上链区块。如图7A所示,共识节点的内存池中包括待上链事务W1、待上链事务W2、待上链事务W3、待上链事务W4、待上链事务W5、待上链事务W6,第一阈值为6。如果共识节点的内存池中的待上链事务的数目达到第一阈值,这时,将内存池中的待上链事务取出,打包成待上链区块。
在另一个实施例中,如果当前时间与生成上一个待上链区块的时间间隔达到第二阈值时,将内存池中的待上链事务取出,打包成待上链事务。需要说明的是,当前时间可以为内存池中最晚上链的待上链事务的接收时间戳,当前时间也可以为当前的标准时间。如图7B所示,共识节点的内存池中包括同一天存入的待上链事务W1、待上链事务W2、待上链事务W3、待上链事务W4、待上链事务W5、待上链事务W6,其中,待上链事务W1的接收时间戳为08:10:06,待上链事务W2的接收时间戳为08:10:08,待上链事务W3的接收时间戳为08:12:13,待上链事务W4的接收时间戳为08:13:20,待上链事务W5的接收时间戳为08:14:20,待上链事务W6的接收时间戳为08:15:05。如果当前时间为内存池中最晚上链的待上链事务的接收时间戳,第二阈值为5分钟,上一个待上链区块的生成时间为08:10:05。这时,待上链事务W6的接收时间戳为08:15:05与待上链区块的生成时间为08:10:05的时间间隔达到第二阈值,那么,将内存池中的待上链事务W1、待上链事务W2、待上链事务W3、待上链事务W4、待上链事务W5、待上链事务W6取出,打包成待上链事务。
该步骤610-步骤620的实施例的好处是,根据内存池中的待上链事务数目达到第一阈值,或者与生成上一个待上链区块的时间间隔达到第二阈值,将内存池中的待上链事务打包成待上链区块,可以保证每个共识周期的每个区块链节点都会生成一个区块。同时,基于第一阈值和第二阈值对待上链事务的打包,有效减少网络传输和验证的开销,有助于提高整个区块链网络的吞吐量和效率,加快事务的确认速度。共识节点可以根据自身的策略和需求,选择将哪些事务包含在区块中。这样可以提高事务的优先级和可靠性,同时过滤掉可能的无效或恶意事务。同时,如果事务数量较多,按照固定事务阈值打包区块可以更好地适应事务的高峰期,避免网络拥塞和延迟。
在步骤520中,轮流将获取的待上链区块作为待考察区块,针对待考察区块,确定多个共识节点中为待考察区块颁发证书的颁证共识节点。待考察区块是指区块链网络中已经生成但尚未被确认或共识的区块。颁证共识节点是指在共识周期中为待考察区块颁发证书的共识节点。
在一个实施例中,如图8所示,针对待考察区块,确定多个共识节点中为待考察区块颁发证书的颁证共识节点,包括:
步骤810、将待考察区块发送到区块链网络中的其它共识节点投票,以便每个共识节点投票后将投票结果通知到区块链网络中的每个共识节点,每个共识节点根据通知到的多个共识节点的投票结果颁发证书;
步骤820、确定为待考察区块颁发证书的共识节点,作为颁证共识节点。
下面对步骤810至步骤820进行详细描述。
在步骤810中,在区块链网络中,待考察区块会被发送到其他共识节点进行投票。投票是指每个共识节点对待考察区块的有效性进行验证和确认,以决定是否将该区块添加到共识节点对应的区块链中的技术。投票过程通常是通过共识算法来进行的,不同的共识算法有不同的投票机制。投票结果包括赞成投票和反对投票。这时,每个共识节点投票后将投票结果通知到区块链网络中的每个共识节点,如果待考察区块通过共识节点验证,共识节点会投票赞成将其添加到区块链中;如果待考察区块未通过验证,共识节点会投票反对将其添加到区块链中。如此一来,每个共识节点根据通知到的多个共识节点的投票结果颁发证书。
在区块链中,证书是指由共识节点根据通知到的多个共识节点的投票结果颁发的确认某个区块的证明。当待考察区块通过投票被多数共识节点确认添加到区块链中时,这个区块就被视为有效的,并且需要生成一个证书来证明其有效性。证书可以包含待考察区块的相关信息,且对于证书包含的具体信息在后续实施例中进行详细说明,在此不再赘述。如图9所示,区块链网络中包括共识节点N1、共识节点N2、共识节点N3、和共识节点N4。将共识节点N1生成的待考察区块(即图9中的黑色实心圆)送到区块链网络中的其它共识节点投票,以便每个共识节点投票后将投票结果通知到区块链网络中的每个共识节点。
在一个实施例中,将待考察区块发送到区块链网络中的其它共识节点投票,包括:
将待考察区块用目标共识节点的密钥签名,发送到其它共识节点,以便其它共识节点接收到签名后,用目标共识节点的密钥验签,将待考察区块存储到其它共识节点的内存池,并用待考察区块中的摘要对内存池中的待考察区块进行验证,如果验证成功,则生成投票结果,向区块链网络中的其它共识节点广播。
待考察区块包括第一签名。第一签名是指由目标共识节点生成的事务的一个签名。为了保证事务的有效性和安全性,目标共识节点需要对待考察区块进行签名。例如,多签名事务是一种需要多个参与者共同签署的事务,通常用于增强事务的安全性和可信度。由目标共识节点对待考察区块生成对应的第一签名后,将待考察区块发送给其他共识节点进行验签,如果验签成功,才能将待考察区块存储到其它共识节点的内存池。
第一签名由目标共识节点对待考察区块利用预定摘要算法求摘要,并对摘要利用目标共识节点的私钥加密而获得。第一签名的获得过程包括,用预定摘要算法(例如哈希算法)对待签名主体求摘要,然后用签名者(即目标共识节点)的私钥(或公钥)对摘要加密。签名算法的不同可以体现在采用不同的预定摘要算法等。所以,目标共识节点对待考察区块的事务利用预定摘要算法求摘要,并对摘要利用目标共识节点的私钥加密,得到第一签名。
在区块链中,为了确保事务的有效性和安全性,对待考察区块的事务先进行签名。目标共识节点使用私钥对事务进行签名,以证明该事务是由其发起的。其他参与者在接收到事务后,需要对第一签名进行验证,以确认待考察区块的事务的真实性和完整性。
在一个实施例中,其它共识节点接收到签名后,用目标共识节点的密钥验签,包括:
获取目标共识节点的密钥(即公钥);
利用密钥对第一签名进行解密,得到解密结果;
对待考察区块的事务利用预定摘要算法重新计算摘要;
如果解密结果与重新计算的摘要一致,则确定验签成功。
公钥是由目标共识节点生成并公开的密钥。公钥可以被其他共识节点用于验证事务生成节点生成的签名。在区块链中,公钥通常用于验签操作,以验证事务的有效性。目标共识节点的公钥和私钥是一对密钥,它们是相互关联的。私钥用于生成签名,公钥用于验签,只有持有相应私钥的目标共识节点才能生成有效的签名,并通过公钥进行验证。
验签的共识节点利用公钥对第一签名进行解密,得到解密结果。这时的解密结果就是一个摘要值。其他共识节点用与签名过程相同的预定摘要算法(例如哈希算法)对事务重新计算摘要。如果解密结果与重新计算的摘要一致,则确定验签成功。如果解密结果与重新计算的摘要不一致,则确定验签失败。
上述实施例的优点是,其它共识节点接收到签名后,利用目标共识节点的公钥对第一签名进行验签,能够验证事务的完整性和真实性,防止未经授权的用户进行恶意操作或篡改数据,确保操作的合法性和可信度。
其他共识节点如果验签成功,将待考察区块存储到其它共识节点对应的内存池,并用待考察区块中的摘要对内存池中的待考察区块进行验证。也就是说,其他共识节点用待考察区块中的摘要对在本地存储的区块中的事务中进行检查,验证某个区块引用的事务是否已经存在。如果区块已经被包含在区块链中,则该区块中的事务被视为已确认,并且可以认为是有效的。如果区块中的事务未被包含在区块链中,则该区块仍然处于待确认状态,并且可能需要等待的确认。如此一来,如果验证成功,则生成投票结果,向区块链网络中的其它共识节点广播。如果验证不成功,则不生成投票结果。
上述实施例的优点是,通过检查本地是否有区块引用的事务,目标共识节点可以验证区块中的事务是否已经被确认,有助于维护区块链网络的稳定性和安全性。
在一个实施例中,区块链网络包含3f+1个共识节点,其中,f为正整数。步骤810中,根据通知到的多个共识节点的投票结果颁发证书,包括:
确定至少接收到2f+1个共识节点的投票结果;
为待考察区块颁发证书。
投票结果是指其他共识节点确认需要将待考察区块添加到对应的区块链中的结果。f是指区块链网络中可能发生故障或产生恶意行为的节点的数量。
证书的生成过程通常是由共识节点完成的。一旦待考察区块被确认添加到区块链中,共识节点会根据投票结果生成一个包含待考察区块信息的证书,并将其广播到整个区块链网络中。为了保证区块链系统即使某些节点发生故障或恶意行为也能继续运行的能力,本公开实施例的区块链网络包含3f+1个共识节点。如此一来,如果目标共识节点或其他共识节点确定至少接收到2f+1个共识节点的投票结果,那么可以为待考察区块颁发证书。如图10所示,区块链网络中包括共识节点N1、共识节点N2、共识节点N3、和共识节点N4,那么,这时的f为1。也就是说,如果目标共识节点或其他共识节点确定至少接收到2f+1=3个共识节点的投票结果,才可以为待考察区块颁发证书。因此,这时只有共识节点1为待考察区块颁发证书。
上述实施例的优点是,通过向多个共识节点发送待考察区块,以根据多个共识节点的投票结果为待考察区块颁发证书,通过颁发证书,共识节点可以证明某个区块的有效性,并确保所有节点在区块链的状态一致性上达成共识,从而有效确保区块链的一致性和安全性,防止恶意节点对区块链进行篡改或攻击。
在步骤820中,在每个共识节点根据通知到的多个共识节点的投票结果颁发证书后,确定为待考察区块颁发证书的共识节点,作为颁证共识节点。
在一个实施例中,如图11所示,步骤510包括:
步骤1110、从目标共识节点存储的第一数据结构中,获取在各个共识周期各个共识节点的待上链区块,其中,第一数据结构包含共识周期、与共识周期下的多个待上链区块的映射,待上链区块包含前一共识周期中为待上链区块颁发的多个证书。
这时,步骤520中,确定多个共识节点中为待考察区块颁发证书的颁证共识节点,包括:
步骤1120、基于待考察区块中的多个证书,确定颁证共识节点。
在步骤1110中,第一数据结构是指区块依赖关系图在计算机中存储的、用于表示共识节点在各个共识周期的所有待上链区块之间的依赖关系的结构。共识周期和待上链区块的具体表示已经在上述实施例中进行了详细说明,在此不再赘述。第一数据结构包含共识周期、与共识周期下的多个待上链区块的映射,也就是说,第一数据结构采用键值对的映射方式,这时,共识周期为键,共识周期下的多个待上链区块为键对应的具体值。如图12所示,目标共识节点存储的第一数据结构中包括第1共识周期与第1共识周期下的多个待上链区块的映射、第2共识周期与第2共识周期下的多个待上链区块的映射、和第3共识周期与第3共识周期下的多个待上链区块的映射。其中,第1共识周期下的多个待上链区块包含:待上链区块B11、待上链区块B12、待上链区块B13,第2共识周期下的多个待上链区块包括待上链区块B21、待上链区块B22、待上链区块B23,第3共识周期下的多个待上链区块包括待上链区块B31、待上链区块B32、待上链区块B33。
在一个实施例中,共识周期下的每个待上链区块包含前一共识周期中为待上链区块颁发的多个证书。也就是说,每个待上链区块也采用键值对的存储方式,这时,共识周期为键,前一共识周期中为待上链区块颁发的多个证书为键对应的具体值。如图13A所示,第2共识周期的待上链区块B21包含:第1共识周期(即第2共识周期的前一共识周期)为待上链区块B21颁发的证书C1、证书C2、和证书C3。
在另一个实施例中,共识周期下的每个待上链区块还包含为待上链区块颁发证书的生成方共识节点的编号。如图13B所示,区块链网络中包括共识节点N1、共识节点N2、共识节点N3、和共识节点N4。这时的第2共识周期的待上链区块B21包含:第1共识周期(即第2共识周期的前一共识周期)中共识节点N1为待上链区块B21颁发的证书C1、第1共识周期(即第2共识周期的前一共识周期)中共识节点N2为待上链区块B21颁发的证书C2、和第1共识周期(即第2共识周期的前一共识周期)中共识节点N2为待上链区块B21颁发的证书C3。
在一个实施例中,证书中包含颁发证书的证书共识周期、和颁发证书的共识节点。证书共识周期是指为待上链区块颁发证书的共识周期。共识周期的含义在上述实施例中已经详细说明,在此不再赘述。颁发证书的共识节点是指为待上链区块颁发证书的节点。如图14A所示,区块链网络中包括共识节点N1、共识节点N2、共识节点N3、和共识节点N4,区块链网络中包括4个共识周期。那么,这时的第2共识周期的待上链区块B21收到的证书C1包含:颁发证书的第1共识周期、和颁发证书的共识节点N1。
在另一个实施例中,待上链区块的证书中还包含待上链区块的摘要值、和投票集。待上链区块的摘要值是指用预定摘要算法(例如哈希算法)对待上链区块中的事务计算摘要所得到的结果。投票集是指待上链区块所接收到的投票结果的集合。如图14A所示,区块链网络中包括共识节点N1、共识节点N2、共识节点N3、和共识节点N4,区块链网络中包括4个共识周期。那么,这时的第2共识周期的待上链区块B21收到的证书C1包含:颁发证书的第1共识周期、颁发证书的共识节点N1、待上链区块B21的摘要值、和待上链区块B21的投票集。
在步骤1120中,待考察区块、证书、和颁证共识节点的含义在上述实施例中已经详细说明,在此不再赘述。
在一个实施例中,如图15所示,步骤1120包括:
步骤1510、确定证书共识周期是待上链区块所在的共识周期的上一个共识周期;
步骤1520、将颁发证书的共识节点确定为颁证共识节点。
下面对步骤1510至步骤1520进行详细描述。
在步骤1510中,因为共识节点在为待上链区块颁发证书后,会向区块链网络中的其他共识节点广播。如此一来,待上链区块的证书中的证书共识周期应该为待上链区块所在的共识周期的上一个共识周期。如图14A所示,第2共识周期的待上链区块B21收到的证书C1中颁发证书的共识周期为第1共识周期。
在步骤1520中,当确定证书共识周期是待上链区块所在的共识周期的上一个共识周期后,将颁发证书的共识节点确定为颁证共识节点。颁证共识节点的含义在上述实施例中已经详细说明,在此不再赘述。
在步骤530中,因为区块依赖关系图中表示的是不同的待上链区块之间的依赖关系,在基于待考察区块中的多个证书,确定为待考察区块颁发证书的颁证共识节点后,将待考察区块、与来自前一共识周期中颁证共识节点的待上链区块确定为具有依赖关系。如此一来,相邻共识周期的待上链区块,形成了一个连续的链条(即依赖关系)。这种依赖关系确保了区块链的不可篡改性和一致性。
在步骤540中,基于获取的待上链区块、和确定的依赖关系,生成区块依赖关系图。区块依赖关系图在上述实施例中已经详细说明,在此不再赘述。如图4所示,共识节点N1在4个共识周期的待上链区块包括:待上链区块B11、待上链区块B12、待上链区块B13、和待上链区块B14。例如,第2共识周期的待上链区块B12与第1共识周期的待上链区块B21(来自共识节点N2)、和第1共识周期的待上链区块B31(来自共识节点N3)具有依赖关系。第4共识周期的待上链区块B24与第3共识周期的待上链区块B13(来自共识节点N1)、第3共识周期的待上链区块B23(来自共识节点N2)、和第3共识周期的待上链区块B43(来自共识节点N4)具有依赖关系。也就是说,图4中不同区块之间的连接线就表示区块之间的依赖关系。
步骤510-步骤540的优点是,获取待上链区块并为其生成证书,有助于确保区块链中的事务和数据是真实、准确和安全的。将待考察区块与来自前一共识周期中颁证共识节点的待上链区块确定为具有依赖关系,帮助确保区块链的连续性和一致性。因此,轮流将获取的待上链区块作为待考察区块,并基于获取的待上链区块和确定的依赖关系,生成区块依赖关系图,有助于提高区块链的可信性和透明度,从而有助于优化共识算法的效率和准确性。
步骤320的详细描述
目标共识周期是指在区块链网络中正在进行共识分析的一个共识周期。共识周期的长度可以根据具体的区块链设计和需求进行设定,通常会根据网络的吞吐量、延迟和安全性等方面进行考量。目标共识周期属于多个共识周期,也就是说,多个共识周期都可以作为目标共识周期。
在一个实施例中,区块链网络包含3f+1个共识节点,其中,f为正整数。目标共识周期通过以下方式在多个共识周期中确定:
将目标共识节点的具有等待共识的待上链区块的多个共识周期按时间顺序排序,得到多个共识周期的序号;
将共识周期的序号模第一值后的余数为同一第二值的共识周期,确定为候选共识周期,其中,第一值为正整数;
将候选共识周期中至少具有2f+1个等待上链的待上链区块、与当前共识周期间隔时间最小的候选共识周期,作为目标共识周期。
共识周期的序号是指对目标共识节点的具有等待共识的待上链区块的多个共识周期按时间顺序排序后的编号。如图16所示,将目标共识节点的多个共识周期进行顺序排序,得到第1共识周期、第2共识周期、第3共识周期、第4共识周期、第5共识周期、和第6共识周期。那么,其中的1、2、3、4、5、6就是共识周期的序号。
模(mod)是一种数学运算,也称为取余运算。模运算用于计算一个数除以另一个数后的余数。第一值是指模运算中的被除数,共识周期的序号是指模运算中的除数。第一值可以根据实际需要进行灵活设定,在此不作具体限定。候选共识周期是指在区块链网络中,根据一定的规则或算法,选择出的一组待上链区块所组成的时间段。在候选共识周期内,这些待上链区块将被提交给共识节点进行验证和颁发证书。换句话说,当使用符号“a mod b”表示时,它表示将整数a除以整数b后所得的余数,这时,a表示共识周期的序号,b表示第一值。如图16所示,例如,如果共识周期的序号为a=2,第一值为b=4,这时,“a mod b”就是2除以4的余数,即2 mod 4 = 2。如果共识周期的序号为a=6,第一值为b=4,这时,“a mod b”就是6除以4的余数,即6 mod 4 = 2。
第二值是指预先设定的用于确定候选共识周期的数值。第二值可以根据实际需要进行灵活设定,在此不作具体限定。当多个共识周期的序号模第一值后的余数为同一第二值,那么,将这些共识周期都作为候选共识周期。如图16所示,例如,第2共识周期的序号为a=2,第一值为b=4,这时,“a mod b”就是2除以4的余数,即2 mod 4 = 2。第6共识周期的序号为a=6,第一值为b=4,这时,“a mod b”就是6除以4的余数,即6 mod 4 = 2。如果第二值为2,那么,这时的第2共识周期和第6共识周期都是候选共识周期。
f是指区块链网络中可能发生故障或产生恶意行为的节点的数量。在基于拜占庭容错(Byzantine Fault Tolerance,BFT)设计的区块链共识方法中,f表示拜占庭容错的最大错误数。目标共识周期是在候选共识周期中选择的一个时间段。目标共识周期用于确定哪些共识节点将参与到共识过程中,并为待上链区块生成证书。为了保证共识的准确性,在确定候选共识周期之后,将候选共识周期中至少具有2f+1个等待上链的待上链区块、与当前共识周期间隔时间最小的候选共识周期,作为目标共识周期。如图16所示,区块链网络包含3f+1个共识节点,即共识节点N1、共识节点N2、共识节点N3、和共识节点N4。也就是说,这时的f=1。如果第一值为b=4,第2共识周期的序号为a=2,这时,“a mod b”就是2除以4的余数,即2 mod 4 = 2。第6共识周期的序号为a=6,这时,“a mod b”就是6除以4的余数,即6mod 4 = 2。如果第二值为2,那么,这时的第2共识周期和第6共识周期都是候选共识周期。如此一来,需要从第2共识周期和第6共识周期中判断目标共识周期。第2共识周期和第6共识周期中都至少具有2f+1=3个等待上链的待上链区块,且第6共识周期为与当前共识周期间隔时间最小的候选共识周期,那么,将第6共识周期作为目标共识周期。
上述实施例的优点是,通过将待上链区块按时间顺序排序,可以快速确定候选共识周期。通过使用模运算来判断是否为同一共识周期,可以减少计算量和时间复杂度,提高共识过程的效率。通过要求候选共识周期中至少具有2f+1个等待上链的待上链区块,可以提高共识的安全性。这是因为在拜占庭容错算法中,要求至少有2f+1个节点达成一致才能保证安全性。同时,通过选择具有最小间隔时间的候选共识周期,可以尽可能减少共识过程中的延迟和可能的攻击窗口。此外,通过调整第一值和要求的待上链区块数量,可以灵活地适应不同的共识网络规模和负载。因此,这种确定目标共识周期的方式,可以有效地进行共识过程,并确保区块链的可信性和一致性。
在一个实施例中,如图17所示,步骤320包括:
步骤1710、将目标共识周期的序号与区块链网络中的共识节点数目进行模运算,将模运算的余数作为待上链区块的索引,在目标共识节点在目标共识周期具有的等待共识的多个待上链区块中,确定候选待上链区块;
步骤1720、如果候选待上链区块在目标共识周期的前一共识周期中得到的证书数达到f+1以上,将候选待上链区块确定为主待上链区块。
下面对步骤1710至步骤1720进行详细描述。
在步骤1710中,目标共识周期的确定方式在上述实施例中已经详细说明,在此不再赘述。区块链网络中的共识节点数目是指区块链网络中包含的共识节点的总数目。如图16所示,区块链网络包含3f+1个共识节点,即共识节点N1、共识节点N2、共识节点N3、和共识节点N4。也就是说,区块链网络中的共识节点数目为4。如果确定第6共识周期为目标共识周期,那么,目标共识周期的序号就是6。
模运算在上述实施例中已经说明,在此不再赘述。这时的模运算的余数是指目标共识周期的序号与区块链网络中的共识节点数目进行模运算后的结果。待上链区块的索引是指在目标共识节点在目标共识周期具有的等待共识的多个待上链区块中,确定候选待上链区块的顺序位置的值。候选上链区块的数目至少为一个。如图16所示,区块链网络中的共识节点数目为4,如果目标共识周期的序号是6,那么,目标共识周期的序号与区块链网络中的共识节点数目进行模运算为6 mod 4 = 2,即待上链区块的索引为2。如果将同一共识周期中的待上链区块从上倒下的索引依次标记为0、1、2、3,那么,这时在目标共识节点在目标共识周期具有的等待共识的多个待上链区块中,确定的候选待上链区块为待上链区块B36。
在步骤1720中,主待上链区块是指候选上链区块中的一个符合要求的区块。主待上链区块的确定方式为,如果候选待上链区块在目标共识周期的前一共识周期中得到的证书数达到f+1以上,将候选待上链区块确定为主待上链区块。如图16所示,区块链网络包含3f+1=4(即f=1)个共识节点,分别为共识节点N1、共识节点N2、共识节点N3、和共识节点N4。如果目标共识周期的序号是6,待上链区块的索引为2,即确定候选待上链区块为待上链区块B36。这时,如果待上链区块B36在第6共识周期的前一共识周期(即第5共识周期)中得到的证书数达到f+1=2以上,则将待上链区块B36确定为主待上链区块。
在一个实施例中,在步骤1720之后,本公开实施例的区块链共识方法还包括:
如果候选待上链区块在目标共识周期的前一共识周期中得到的证书数未达到f+1以上,则顺序确定候选待上链区块之后的各个待上链区块在目标共识周期的前一共识周期中得到的证书数,如果得到的证书数达到f+1以上,将待上链区块确定为主待上链区块。
如图18所示,区块链网络包含3f+1=4(即f=1)个共识节点,分别为共识节点N1、共识节点N2、共识节点N3、和共识节点N4。如果结合步骤1710确定第r+1共识周期的待上链区块B13为候选待上链区块,这时,确定候选待上链区块在目标共识周期的前一共识周期中得到的证书数。因为待上链区块B13在第r共识周期中得到的证书数为1<f+1=2,也就是说,候选待上链区块在目标共识周期的前一共识周期中得到的证书数未达到f+1以上,这时,顺序确定候选待上链区块之后的各个待上链区块在目标共识周期的前一共识周期中得到的证书数,即确定待上链区块B23在第r共识周期中得到的证书数。如此一来,因为待上链区块B23在第r共识周期中得到的证书数为3>f+1=2,那么,可以将待上链区块B23确定为主待上链区块。可以理解的是,如果待上链区块B23在第r共识周期中得到的证书数也未达到f+1以上,则再确定待上链区块B33在第r共识周期中得到的证书数,从而确定出主待上链区块。
上述实施例的优点是,通过将目标共识周期的序号与区块链网络中的共识节点数目进行模运算来确定待上链区块的索引,可以将待上链区块的索引分布到不同的共识节点上。因为待上链区块的索引值不仅取决于共识节点数目,还取决于目标共识周期的序号。如此一来,可以使得不同的共识周期和不同的共识节点之间的共识结果更具随机性和不可预测性,避免单点故障和中心化控制。因为在拜占庭容错算法中,要求至少有f+1个节点达成一致才能保证共识的正确性和安全性。因此,通过要求候选待上链区块在前一共识周期中得到的证书数达到f+1以上,可以增加共识的确定性。此外,通过满足这个条件,可以有效减少共识过程中的错误和攻击的可能性。
步骤330的详细描述
在步骤330中,依赖树是一种用于描述待上链区块之间依赖关系的数据结构。依赖树以树的形式展现,其中树的节点表示待上链区块,边表示待上链区块之间的依赖关系。树的根节点为步骤320确定的主待上链区块,而叶子节点表示最底层的待上链区块。每个节点可以有零个或多个子节点,表示该待上链区块所依赖的其他区块。依赖树有助于理解和管理复杂区块链系统中的依赖关系。通过查看依赖树,可以清晰地了解每个区块所依赖的其他区块,以及它们之间的层级关系。
在一个实施例中,如图19所示,步骤330包括:
步骤1910、将待分解区块初始化为主待上链区块,将待考察共识周期初始化为目标共识周期;
步骤1920、执行第一过程。
下面对步骤1910至步骤1920进行详细描述。
在步骤1910中,待分解区块用于表示一个区块变量。将待分解区块初始化为主待上链区块,是指将主待上链区块作为待分解区块的初始区块。待考察共识周期用于表示一个共识周期变量。将待考察共识周期初始化为目标共识周期,是指将目标共识周期作为待考察共识周期初的初始共识周期。主待上链区块和目标共识周期的具体含义和确定方式在上述实施例中已经详细说明,在此不再赘述。将待分解区块和待考察共识周期初始化,并按照设定的规则过程生成依赖树,能够保证依赖树生成的准确性。
在步骤1920中,第一过程是指基于初始化的待分解区块和待考察共识周期进行循环更新操作,生成以主待上链区块为根节点的依赖树的过程。
在一个实施例中,如图20所示,第一过程包括:
步骤2010、在区块依赖关系图中,查找在待考察共识周期的前一共识周期中与待分解区块具有依赖关系的各个待上链区块;
步骤2020、用每个待上链区块轮流更新待分解区块,用前一共识周期更新待考察共识周期;
步骤2030、重复第一过程,从而得到以主待上链区块为根节点的依赖树。
下面对步骤2010至步骤2030进行详细描述。
在步骤2010中,在区块依赖关系图中,待考察共识周期是指当前正在考察的共识周期。待分解区块是指在待考察共识周期中需要进行处理的区块。通过查找在待考察共识周期的前一共识周期中与待分解区块具有依赖关系的各个待上链区块,可以确定待分解区块与其他待上链区块之间的依赖关系。需要说明的是,前一共识周期中的待上链区块可能是与待分解区块有直接依赖关系的区块,也可能是与待分解区块的无依赖关系的区块。如图16所示,如果待考察共识周期为第6共识周期,待分解区块为待上链区块B36,那么,这时在待考察共识周期的前一共识周期(即第5共识周期)中与待分解区块具有依赖关系的各个待上链区块包括:待上链区块B25、待上链区块B35、和待上链区块B45。
步骤2020中,在待考察共识周期的前一共识周期中已经查找完与待分解区块具有依赖关系的全部待上链区块后,用每个待上链区块轮流更新待分解区块,用前一共识周期更新待考察共识周期。换句话说,就是用与待分解区块具有依赖关系的各个待上链区块依次作为新的待分解区块,用这时的待分解区块所在的共识周期(即待考察共识周期的前一共识周期)作为新的待考察共识周期。如图16所示,如果初始化的待考察共识周期为第6共识周期,初始化的待分解区块为待上链区块B36,那么,这时在待考察共识周期的前一共识周期(即第5共识周期)中与待分解区块具有依赖关系的各个待上链区块包括:待上链区块B25、待上链区块B35、和待上链区块B45。如此一来,分别用待上链区块B25、待上链区块B35、和待上链区块B45作为新的待分解区块,并将第5共识周期作为新的待考察共识周期。
在步骤2030中,采用新的待分解区块和新的待考察共识周期重复执行步骤2010至步骤2030,从而得到以主待上链区块为根节点的依赖树。
上述步骤2010-步骤2030的优点是,通过在区块依赖关系图中查找依赖关系,可以准确地找到与待分解区块具有依赖关系的待上链区块,从而确保依赖树的构建是准确的,不会遗漏任何相关的区块。本公开实施例使用前一共识周期的区块来更新待考察共识周期,可以减少重新计算的工作量。如此一来,可以提高区块链的共识效率,节省时间和计算资源。这些步骤可以循环重复执行,从而构建以主待上链区块为根节点的完整依赖树。这种可循环性使得算法具有良好的扩展性,可以处理更复杂的区块依赖关系。
在一个实施例中,如图21所示,步骤2030包括:
步骤2110、获取与当前共识周期间隔最小的、待上链区块都已上链的截止共识周期;
步骤2120、重复第一过程,直到前一共识周期为截止共识周期,从而得到以主待上链区块为根节点的依赖树。
下面对步骤2110至步骤2120进行详细描述。
在步骤2110中,截止共识周期是指与当前共识周期之间间隔最小、且在该共识周期中的所有待上链区块都已经成功上链的共识周期。通过设置截止共识周期,可以避免区块都已经上链的共识周期中的区块加入到依赖树中,从而降低共识和上链的效率。需要说明的是,每个共识节点会维护一个本地状态,这个本地状态包括截止共识周期和第一数据结构。
在步骤2120中,为了确定出能够提高区块链网络共识和上链的效率的依赖树最底层的节点,在采用新的待分解区块和新的待考察共识周期重复执行步骤2010至步骤2030时,如果前一共识周期为截止共识周期,那么当前的共识周期中的区块就是依赖树最底层的区块,如此一来,就得到以主待上链区块为根节点的依赖树。本公开实施例的方法不依赖于一个周期一个周期地共识上链单个区块,而是一个共识周期能共识多个待上链区块并上链,也就是说,通过构建以主待上链区块为根节点的完整依赖树,提高了共识和上链效率。
在一个实施例中,获取与当前共识周期间隔最小的、待上链区块都已上链的截止共识周期,包括:
从目标共识节点的内存池中,获取与当前共识周期间隔最小的、待上链区块都已上链的截止共识周期。
内存池的含义在上述实施例中已经详细说明,在此不再赘述。目标共识节点的内存池还用于存储多个截止共识周期。因此,可以从目标共识节点的内存池中,获取当前的目标共识节点对应的截止共识周期。如图22所示,目标共识节点的内存池中存储了4个截止共识周期,分别为截止共识周期DT1:08:10:05、截止共识周期DT2:08:15:05、截止共识周期DT3:08:20:05、截止共识周期DT4:08:25:05。
这时,对于步骤340,在按照上链顺序,将多个待上链区块上链之后,区块链共识方法还包括:
用目标共识周期,更新内存池中的截止共识周期。
需要说明的是,关于步骤340的描述在后面实施例中进行详细说明,在此先不进行说明。
如图22所示,目标共识节点的内存池中存储了4个截止共识周期,分别为截止共识周期DT1:08:10:05、截止共识周期DT2:08:15:05、截止共识周期DT3:08:20:05、截止共识周期DT4:08:25:05。在按照上链顺序,将多个待上链区块上链之后。因为目标共识节点在目标共识周期中的待上链区块都已经完成上链,可以将目标共识周期作为一个新的截止共识周期存储到目标共识节点的内存池中。如此一来,下一个目标共识节点可以选择该目标共识周期作为自己的截止共识周期进行依赖树的构建。
上述步骤2110-步骤2120的优点是,通过获取与当前共识周期间隔最小的截止共识周期,可以确保依赖树的构建是准确的。这样可以避免将未上链的区块包含在依赖树中,保证结果的准确性。通过重复执行第一过程,可以逐步构建以主待上链区块为根节点的完整依赖树。这种迭代的方式可以提高效率,因为每次迭代只需处理与当前共识周期间隔最小的截止共识周期,而不需要处理整个区块链的所有区块。如此一来,直到前一共识周期为截止共识周期时停止循环,从而构建完整的依赖树。这种可循环性使得算法具有良好的扩展性,可以处理更复杂的区块依赖关系,从而有效提高区块链网络中的共识和上链效率。
本公开实施例的步骤310在共识周期组合下的步骤
在一个实施例中,步骤310中,获取目标共识节点的区块依赖关系图,包括:在目标共识节点的具有等待共识的待上链区块的多个共识周期中,将每连续L个共识周期组合成一个超周期,在每个超周期的最后一个共识周期中获取目标共识节点的区块依赖关系图。
超周期是指在目标共识节点的具有等待共识的待上链区块的多个共识周期中,按照预设共识周期数量组合得到的周期。预设共识周期数量表示为L,L为正整数,如2、3等。这种通过将连续的L个共识周期组合成一个超周期,可以根据需要调整超周期的长度,以满足不同的需求和场景。如图23所示,例如,目标共识节点具有等待共识的待上链区块包含在4个共识周期中,分别为第1共识周期、第2共识周期、第3共识周期、和第4共识周期。如果L为2,那么,可以将第1共识周期和第2共识周期组合为一个超周期S1,将第3共识周期和第4共识周期组合为一个超周期S2。
这时的目标共识周期是每个超周期中预定顺序位的共识周期。也就是说,将每个超周期作为一个整体,获取该超周期中的共识周期的待上链区块之间的依赖关系。如此一来,在每个超周期的最后一个共识周期中获取目标共识节点的区块依赖关系图。如图23所示,将第1共识周期和第2共识周期组合为一个超周期S1,将第3共识周期和第4共识周期组合为一个超周期S2后,对超周期S1的最后一个共识周期(也就是第2共识周期)中获取目标共识节点的区块依赖关系图,对超周期S2的最后一个共识周期(也就是第4共识周期)中获取目标共识节点的区块依赖关系图。
这时的截止共识周期是当前共识周期所在的超周期的前一个超周期中的目标共识周期。如图23所示,将第1共识周期和第2共识周期组合为一个超周期S1,将第3共识周期和第4共识周期组合为一个超周期S2。如果这时超周期S1中的目标共识周期为第1共识周期,那么,超周期S2中当前共识周期的截止共识周期为超周期S1中的第1共识周期。目标共识周期的确定方式在上述实施例中已经详细说明,为了节约篇幅,在此不再赘述。
上述实施例的优点是,通过预定顺序位可以明确指定每个超周期中的目标共识周期,这样可以确保所获取的区块依赖关系图是按照预定的顺序位进行的,提高了可控性和可靠性。同时,通过在每个超周期的最后一个共识周期中获取目标共识节点的区块依赖关系图,可以减少区块依赖关系图中处理的区块数量,从而有效提高区块链网络的共识和上链效率。
步骤340的详细描述
在步骤340中,基于依赖树中各个待上链区块的依赖关系,确定各个待上链区块的上链顺序,从而按照上链顺序,将多个待上链区块上链。
上链顺序是指将依赖树中的各个待上链区块上链到区块链的顺序。如图24所示,依赖树的构建是以主待上链区块为根节点,循环执行第一过程,以找出与上一层待上链区块具有依赖关系的区块,直到前一共识周期为截止共识周期。也就是说,在依赖树中,上一层的待上链区块依赖于下一层的区块。如此一来,就需要从依赖树的最底层开始上链,为其上一层的上链提供条件,从而保证每个区块的准确上链。并且,由于按照待上链区块的依赖关系确定上链顺序,使确定的上链顺序具有正确的前后执行顺序,有效提高了不同共识节点的上链正确性。
在一个实施例中,如图25所示,步骤340中,基于依赖树中各个待上链区块的依赖关系,确定各个待上链区块的上链顺序,包括:
步骤2510、将待处理层初始化为依赖树的最下一层,并初始化排序列表为空集;
步骤2520、执行第二过程;
步骤2530、将排序列表中的节点的顺序作为上链顺序。
下面对步骤2510至步骤2530进行详细描述。
在步骤2510中,待处理层用于表示依赖树中当前正在处理的层变量。将待处理层初始化为依赖树的最下一层,是指将依赖树的最下一层作为待处理层的初始层。排序列表是指按照上链顺序存储待上链区块的一个结构。初始化排序列表为空集,是指将空集作为排序列表的初始列表。空集是指不包含任何元素的集合。需要说明的是,通过将待处理层初始化为最下一层,可以确保依赖树的构建是可靠的。由于最下一层的区块没有依赖关系,它们的排序和处理不会受到其他区块的影响。这样可以避免将已上链的区块包含在依赖树中,保证结果的可靠性。
在步骤2520中,第二过程是指根据初始化的待处理层和排序列表进行循环更新操作,以从依赖树中确定节点的顺序,从而确定各个待上链区块的上链顺序的过程。
在一个实施例中,如图26所示,第二过程包括:
步骤2610、从待处理层的未取出节点中,取出与待处理层的上一层的同一节点具有依赖关系的至少一个节点,放入排序列表;
步骤2620、将上一层的同一节点放入排序列表;
步骤2630、如果上一层中尚有节点未取出,则返回从待处理层的未取出节点中,取出与待处理层的上一层的同一节点具有依赖关系的至少一个节点,放入排序列表的步骤(即步骤2610);如果同一层中的节点已都取出,执行步骤2640;
步骤2640、用节点都已取出的层的上一层更新待处理层,重复第二过程,直到取出根节点。
需要说明的是,树的排序方法包括前序排序、中序排序、和后序排序等。本公开实施例并不限定依赖树具体的排序方法。
在步骤2610中,待处理层的未取出节点是指待处理层中未放入排序列表的节点。待处理层初始化为依赖树的最下一层,那么,就是先从最下一层的未取出节点中,取出与待处理层的上一层的同一节点具有依赖关系的至少一个节点,放入排序列表。
在步骤2620中,在将与待处理层的上一层的同一节点具有依赖关系的至少一个节点,放入排序列表后,将上一层的同一节点放入排序列表。例如,与节点T3具有一来关系的下一层的节点包含节点T4、节点T5、节点T6。那么,这个是排序列表为[节点T4,节点T5,节点T6,节点T3]。
在步骤2630中,如果上一层中尚有节点未取出,则返回执行步骤2610,即保证待处理层中的节点都被取出。
在步骤2640中,用节点都已取出的层的上一层更新待处理层,重复第二过程,直到取出根节点。如此一来,可以保证依赖树中的每个节点都被取出放入排序列表中。
如图27A所示,根据上述实施例的步骤310和步骤320,确定目标共识节点为共识节点N1,共识节点N1的目标共识周期为第4共识周期,从而确定第4共识周期中的主待上链区块为节点T1对应的待上链区块。根据上述实施例的步骤330,确定以节点T1对应的待上链区块为根节点的依赖树。如此一来,将待处理层初始化为依赖树的最下一层(即图中的第一层),并初始化排序列表为空集。第一层的未取出节点包括节点T4、节点T5、节点T6、节点T8。在一个实施例中,可以采用依赖树的前序排序方法确定上链顺序对应的排序列表。如此一来,先从左到右将与待处理层的上一层的同一节点具有依赖关系的至少一个节点放入排序列表,即先将节点T4、节点T5、节点T6取出放入排序列表。然后,将节点T4、节点T5、节点T6在上一层的同一节点,即节点T3取出放入排序列表。因为第一层中还有节点T8未取出,则返回第一层,将节点T8取出放入排序列表。将节点T8在第二层的节点T7取出放入排序列表。因为此时依赖树的第一层中的节点全部取出,那么,将第二层作为新的待处理层,并重复执行第二过程,直至取出根节点,得到最终的排序列表。因此,这时的排序列表为[节点T4,节点T5,节点T6,节点T3,节点T8,节点T7,节点T9,节点T2,节点T11,节点T10,节点T12,节点T1]。
在另一个实施例中,还可以基于树的层确定上链顺序对应的排序列表。如图27B所示,依赖树的构建与图27A中的区块依赖关系图相同。这时,先取出依赖树的最下一层(即第一层)的节点,再取出第二层的节点,依此类推,直至取出根节点,得到最终的排序列表。因此,这时的排序列表为[节点T4,节点T5,节点T6,节点T8,节点T3,节点T7,节点T9,节点T11,节点T2,节点T10,节点T12,节点T1]。
基于依赖树中各个待上链区块的依赖关系,确定各个待上链区块的上链顺序并不限定与上述两种实施例所公开的方式,在此不再赘述。
上述实施例的优点是,先取出与待处理层的上一层具有依赖关系的节点,并将其放入排序列表,再将上一层的同一节点放入排序列表,这样可以保证在处理节点时,其依赖的节点已经被处理过,确保处理的正确性和完整性。通过判断上一层中是否还有节点未取出,以确定是否需要返回步骤,能够确保所有依赖关系都被正确处理。因此,通过逐步更新待处理层,使得整个依赖树能够被正确处理。本公开实施例由于按照待上链区块的依赖关系确定上链顺序,使确定的上链顺序具有正确的前后执行顺序,有效提高了上链正确性。
本公开实施例的区块链上链方法的实施细节
下面参照图28,详细示例性说明本公开实施例的区块链共识方法的实施细节。
在步骤2810中,从目标共识节点存储的第一数据结构中,获取在各个共识周期各个共识节点的待上链区块,其中,第一数据结构包含共识周期、与共识周期下的多个待上链区块的映射,待上链区块包含前一共识周期中为待上链区块颁发的多个证书;轮流将获取的待上链区块作为待考察区块,将待考察区块用目标共识节点的密钥签名,发送到其它共识节点,以便其它共识节点接收到签名后,用目标共识节点的密钥验签,将待考察区块存储到其它共识节点的内存池,并用待考察区块中的摘要对内存池中的待考察区块进行验证,如果验证成功,则生成投票结果,向区块链网络中的其它共识节点广播,以便每个共识节点投票后将投票结果通知到区块链网络中的每个共识节点,每个共识节点确定至少接收到2f+1个共识节点的投票结果;为待考察区块颁发证书;确定为待考察区块颁发证书的共识节点,作为颁证共识节点;将待考察区块、与来自前一共识周期中颁证共识节点的待上链区块确定为具有依赖关系;基于获取的待上链区块、和确定的依赖关系,生成区块依赖关系图,区块依赖关系图包含目标共识节点在各个共识周期具有的、来自各个共识节点的等待共识的待上链区块、以及待上链区块与前一共识周期的各个待上链区块的依赖关系。
在步骤2820中,将目标共识周期的序号与区块链网络中的共识节点数目进行模运算,将模运算的余数作为待上链区块的索引,在目标共识节点在目标共识周期具有的等待共识的多个待上链区块中,确定候选待上链区块;如果候选待上链区块在目标共识周期的前一共识周期中得到的证书数达到f+1以上,将候选待上链区块确定为主待上链区块,目标共识周期属于多个共识周期。
在步骤2830中,将待分解区块初始化为主待上链区块,将待考察共识周期初始化为目标共识周期;执行第一过程,第一过程包括:在区块依赖关系图中,查找在待考察共识周期的前一共识周期中与待分解区块具有依赖关系的各个待上链区块,用每个待上链区块轮流更新待分解区块,用前一共识周期更新待考察共识周期,从目标共识节点的内存池中,获取与当前共识周期间隔最小的、待上链区块都已上链的截止共识周期; 重复第一过程,直到前一共识周期为截止共识周期,从而得到以主待上链区块为根节点的依赖树。
在步骤2840中,将待处理层初始化为依赖树的最下一层,并初始化排序列表为空集;执行第二过程,第二过程包括:从待处理层的未取出节点中,取出与待处理层的上一层的同一节点具有依赖关系的至少一个节点,放入排序列表;将上一层的同一节点放入排序列表;如果上一层中尚有节点未取出,则返回从待处理层的未取出节点中,取出与待处理层的上一层的同一节点具有依赖关系的至少一个节点,放入排序列表的步骤;在将任何一个节点取出并放入排序列表时,如果同一层中的节点已都取出,则用节点都已取出的层的上一层更新待处理层,重复第二过程,直到取出根节点;将排序列表中的节点的顺序作为上链顺序,从而按照上链顺序,将多个待上链区块上链,用目标共识周期,更新内存池中的截止共识周期。
上述实施例的优点是,将在多个共识周期各自等待共识的多个待上链区块,组成一个区块依赖关系图,这时,所有共识节点得到的这个区块依赖关系图是一致的。在该区块依赖关系图中,确定主待上链区块,并确定以主待上链区块为根节点的依赖树。当得到依赖树后,就可以基于依赖树中各个待上链区块的依赖关系,确定各个待上链区块的上链顺序。由于所有共识节点得到的这个区块依赖关系图是一致的,上述确定上链顺序的规则也是一致的,因此能够做到上链前的一致共识。同时,本公开实施例的方法不依赖于一个周期一个周期地共识上链单个区块,而是一个共识周期能共识多个待上链区块并上链,提高了共识和上链效率。并且,由于按照待上链区块的依赖关系确定上链顺序,使确定的上链顺序具有正确的前后执行顺序,有效提高了上链正确性。
本公开实施例的装置和设备描述
根据本公开的一方面,如图29所示,提供了一种区块链共识装置2900,该区块链共识装置2900用于区块链网络中的目标共识节点。在每个共识周期区块链网络中的每个共识节点生成待上链区块,发送给其它共识节点共识,从而目标共识节点在每个共识周期有来自多个共识节点的待上链区块等待共识,该区块链共识装置2900包括:
获取单元2910,用于获取目标共识节点的区块依赖关系图,区块依赖关系图包含目标共识节点在各个共识周期具有的、来自各个共识节点的等待共识的待上链区块、以及待上链区块与前一共识周期的各个待上链区块的依赖关系;
区块选取单元2920,用于在目标共识节点在目标共识周期具有的等待共识的待上链区块中选取主待上链区块,目标共识周期属于多个共识周期;
第一确定单元2930,用于在区块依赖关系图中,确定以主待上链区块为根节点的依赖树;
上链单元2940,用于基于依赖树中各个待上链区块的依赖关系,确定各个待上链区块的上链顺序,从而按照上链顺序,将多个待上链区块上链。
可选的,获取单元2910具体用于:
获取在各个共识周期各个共识节点的待上链区块;
轮流将获取的待上链区块作为待考察区块,针对待考察区块,确定多个共识节点中为待考察区块颁发证书的颁证共识节点;
将待考察区块、与来自前一共识周期中颁证共识节点的待上链区块确定为具有依赖关系;
基于获取的待上链区块、和确定的依赖关系,生成区块依赖关系图。
可选地,获取单元2910还具体用于:
将待考察区块发送到区块链网络中的其它共识节点投票,以便每个共识节点投票后将投票结果通知到区块链网络中的每个共识节点,每个共识节点根据通知到的多个共识节点的投票结果颁发证书;
确定为待考察区块颁发证书的共识节点,作为颁证共识节点。
可选地,获取单元2910还具体用于:
将待考察区块用目标共识节点的密钥签名,发送到其它共识节点,以便其它共识节点接收到签名后,用目标共识节点的密钥验签,将待考察区块存储到其它共识节点的内存池,并用待考察区块中的摘要对内存池中的待考察区块进行验证,如果验证成功,则生成投票结果,向区块链网络中的其它共识节点广播。
可选地,区块链网络包含3f+1个共识节点,其中,f为正整数;
获取单元2910还具体用于:
确定至少接收到2f+1个共识节点的投票结果;
为待考察区块颁发证书。
可选地,获取单元2910还具体用于:
从目标共识节点存储的第一数据结构中,获取在各个共识周期各个共识节点的待上链区块,其中,第一数据结构包含共识周期、与共识周期下的多个待上链区块的映射,待上链区块包含前一共识周期中为待上链区块颁发的多个证书;
获取单元2910还具体用于:
基于待考察区块中的多个证书,确定颁证共识节点。
可选地,证书中包含颁发证书的证书共识周期、和颁发证书的共识节点;
获取单元2910还具体用于:
确定证书共识周期是待上链区块所在的共识周期的上一个共识周期;
将颁发证书的共识节点确定为颁证共识节点。
可选地,区块链网络包含3f+1个共识节点,其中,f为正整数;目标共识周期通过以下方式在多个共识周期中确定:
将目标共识节点的具有等待共识的待上链区块的多个共识周期按时间顺序排序,得到多个共识周期的序号;
将共识周期的序号模第一值后的余数为同一第二值的共识周期,确定为候选共识周期,其中,第一值为正整数;
将候选共识周期中至少具有2f+1个等待上链的待上链区块、与当前共识周期间隔时间最小的候选共识周期,作为目标共识周期。
可选地,区块选取单元2920具体用于;
将目标共识周期的序号与区块链网络中的共识节点数目进行模运算,将模运算的余数作为待上链区块的索引,在目标共识节点在目标共识周期具有的等待共识的多个待上链区块中,确定候选待上链区块;
如果候选待上链区块在目标共识周期的前一共识周期中得到的证书数达到f+1以上,将候选待上链区块确定为主待上链区块。
可选地,在如果候选待上链区块在目标共识周期的前一共识周期中得到的证书数达到f+1以上,将候选待上链区块确定为主待上链区块之后,区块链共识装置还包括:
第二确定单元(未示出),用于如果候选待上链区块在目标共识周期的前一共识周期中得到的证书数未达到f+1以上,则顺序确定候选待上链区块之后的各个待上链区块在目标共识周期的前一共识周期中得到的证书数,如果得到的证书数达到f+1以上,将待上链区块确定为主待上链区块。
可选地,第一确定单元2930具体用于:
将待分解区块初始化为主待上链区块,将待考察共识周期初始化为目标共识周期;
执行第一过程,第一过程包括:在区块依赖关系图中,查找在待考察共识周期的前一共识周期中与待分解区块具有依赖关系的各个待上链区块,用每个待上链区块轮流更新待分解区块,用前一共识周期更新待考察共识周期,重复第一过程,从而得到以主待上链区块为根节点的依赖树。
可选地,第一确定单元2930还具体用于:
获取与当前共识周期间隔最小的、待上链区块都已上链的截止共识周期;
重复第一过程,直到前一共识周期为截止共识周期,从而得到以主待上链区块为根节点的依赖树。
可选地,第一确定单元2930还具体用于:
从目标共识节点的内存池中,获取与当前共识周期间隔最小的、待上链区块都已上链的截止共识周期;
在按照上链顺序,将多个待上链区块上链之后,区块链共识装置还包括:
更新单元(未示出),用于用目标共识周期,更新内存池中的截止共识周期。
可选地,获取单元2910还具体用于:在目标共识节点的具有等待共识的待上链区块的多个共识周期中,将每连续L个共识周期组合成一个超周期,在每个超周期的最后一个共识周期中获取目标共识节点的区块依赖关系图,其中,L为正整数;
目标共识周期是每个超周期中预定顺序位的共识周期;
截止共识周期是当前共识周期所在的超周期的前一个超周期中的目标共识周期。
可选地,依赖树以主待上链区块为根节点,以各个共识周期为依赖树的各个层,以共识周期中的各个待上链区块为层中的节点;
上链单元2940具体用于:
将待处理层初始化为依赖树的最下一层,并初始化排序列表为空集;
执行第二过程,第二过程包括:从待处理层的未取出节点中,取出与待处理层的上一层的同一节点具有依赖关系的至少一个节点,放入排序列表;将上一层的同一节点放入排序列表;如果上一层中尚有节点未取出,则返回从待处理层的未取出节点中,取出与待处理层的上一层的同一节点具有依赖关系的至少一个节点,放入排序列表的步骤;在将任何一个节点取出并放入排序列表时,如果同一层中的节点已都取出,则用节点都已取出的层的上一层更新待处理层,重复第二过程,直到取出根节点;
将排序列表中的节点的顺序作为上链顺序。
可选地,待上链区块由共识节点通过以下方式生成:
从客户端接收待上链事务,放入共识节点的内存池;
当内存池中的待上链事务数目达到第一阈值,或者与生成上一个待上链区块的时间间隔达到第二阈值时,将内存池中的待上链事务取出,打包成待上链区块。
参照图30,图30为实现本公开实施例的区块链共识方法的终端的部分的结构框图,该终端包括:射频(RaD1o Frequency,简称RF)电路3010、存储器3015、输入单元3030、显示单元3040、传感器3050、音频电路3060、无线保真(wireless fidelity,简称WiFi)模块3070、处理器3080、以及电源3090等部件。本领域技术人员可以理解,图30示出的终端结构并不构成对手机或电脑的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
RF电路3010可用于收发信息或通话过程中,信号的接收和发送,特别地,将基站的下行信息接收后,给处理器3080处理;另外,将设计上行的数据发送给基站。
存储器3015可用于存储软件程序以及模块,处理器3080通过运行存储在存储器3015的软件程序以及模块,从而执行对象终端的各种功能应用以及数据处理。
输入单元3030可用于接收输入的数字或字符信息,以及产生与对象终端的设置以及功能控制有关的键信号输入。具体地,输入单元3030可包括触控面板3031以及其他输入装置3032。
显示单元3040可用于显示输入的信息或提供的信息以及对象终端的各种菜单。显示单元3040可包括显示面板3041。
音频电路3060、扬声器3061,传声器3062可提供音频接口。
在本实施例中,该终端所包括的处理器3080可以执行前面实施例的区块链共识方法。
本公开实施例的终端包括但不限于手机、电脑、智能语音交互设备、智能家电、车载终端、飞行器等。本公开实施例可应用于各种领域,包括但不限于联盟链、结构化信息处理、安全技术、数据安全、数据存储、信息技术等。
图31为实施本公开实施例的区块链共识方法的服务器的部分的结构框图。服务器可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上中央处理器(CentralProcessing Units,简称CPU)3122(例如,一个或一个以上处理器)和存储器3132,一个或一个以上存储应用程序3142或数据3144的存储介质3130(例如一个或一个以上海量存储装置)。其中,存储器3132和存储介质3130可以是短暂存储或持久存储。存储在存储介质3130的程序可以包括一个或一个以上模块(图示没标出),每个模块可以包括对服务器中的一系列指令操作。更进一步地,中央处理器3122可以设置为与存储介质3130通信,在服务器上执行存储介质3130中的一系列指令操作。
服务器还可以包括一个或一个以上电源3126,一个或一个以上有线或无线网络接口3150,一个或一个以上输入输出接口3158,和/或,一个或一个以上操作系统3141,例如Windows ServerTM,Mac OS XTM,UnixTM ,LinuxTM,FreeBSDTM等等。
服务器中的中央处理器3122可以用于执行本公开实施例的区块链共识方法。
本公开实施例还提供一种计算机可读存储介质,计算机可读存储介质用于存储程序代码,程序代码用于执行前述各个实施例的区块链共识方法。
本公开实施例还提供了一种计算机程序产品,该计算机程序产品包括计算机程序。计算机设备的处理器读取该计算机程序并执行,使得该计算机设备执行实现上述的区块链共识方法。
本公开的说明书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本公开的实施例例如能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“包含”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或装置不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或装置固有的其它步骤或单元。
应当理解,在本公开中,“至少一个(项)”是指一个或者多个,“多个”是指两个或两个以上。“和/或”,用于描述关联对象的关联关系,表示可以存在三种关系,例如,“A和/或B”可以表示:只存在A,只存在B以及同时存在A和B三种情况,其中A,B可以是单数或者复数。字符“/”一般表示前后关联对象是一种“或”的关系。“以下至少一项(个)”或其类似表达,是指这些项中的任意组合,包括单项(个)或复数项(个)的任意组合。例如,a,b或c中的至少一项(个),可以表示:a,b,c,“a和b”,“a和c”,“b和c”,或“a和b和c”,其中a,b,c可以是单个,也可以是多个。
应了解,在本公开实施例的描述中,多个(或多项)的含义是两个以上,大于、小于、超过等理解为不包括本数,以上、以下、以内等理解为包括本数。
在本公开所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本公开各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本公开的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机装置(可以是个人计算机,服务器,或者网络装置等)执行本公开各个实施例方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,简称ROM)、随机存取存储器(Random Access Memory,简称RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
还应了解,本公开实施例提供的各种实施方式可以任意进行组合,以实现不同的技术效果。
以上是对本公开的实施方式的具体说明,但本公开并不局限于上述实施方式,熟悉本领域的技术人员在不违背本公开精神的条件下还可作出种种等同的变形或替换,这些等同的变形或替换均包括在本公开权利要求所限定的范围内。

Claims (20)

1.一种区块链共识方法,其特征在于,用于区块链网络中的目标共识节点,在每个共识周期所述区块链网络中的每个共识节点生成待上链区块,发送给其它所述共识节点共识,从而所述目标共识节点在每个所述共识周期有来自多个所述共识节点的所述待上链区块等待共识,所述区块链共识方法包括:
获取所述目标共识节点的区块依赖关系图,所述区块依赖关系图包含所述目标共识节点在各个所述共识周期具有的、来自各个所述共识节点的等待共识的所述待上链区块、以及所述待上链区块与前一所述共识周期的各个所述待上链区块的依赖关系;
在所述目标共识节点在目标共识周期具有的等待共识的所述待上链区块中选取主待上链区块,所述目标共识周期属于多个所述共识周期;
在所述区块依赖关系图中,确定以所述主待上链区块为根节点的依赖树;
基于所述依赖树中各个所述待上链区块的所述依赖关系,确定各个所述待上链区块的上链顺序,从而按照所述上链顺序,将多个所述待上链区块上链。
2.根据权利要求1所述的区块链共识方法,其特征在于,所述获取所述目标共识节点的区块依赖关系图,包括:
获取在各个所述共识周期各个所述共识节点的所述待上链区块;
轮流将获取的所述待上链区块作为待考察区块,针对所述待考察区块,确定多个所述共识节点中为所述待考察区块颁发证书的颁证共识节点;
将所述待考察区块、与来自前一所述共识周期中所述颁证共识节点的所述待上链区块确定为具有依赖关系;
基于获取的所述待上链区块、和确定的所述依赖关系,生成所述区块依赖关系图。
3.根据权利要求2所述的区块链共识方法,其特征在于,所述针对所述待考察区块,确定多个所述共识节点中为所述待考察区块颁发证书的颁证共识节点,包括:
将所述待考察区块发送到所述区块链网络中的其它所述共识节点投票,以便每个所述共识节点投票后将投票结果通知到所述区块链网络中的每个所述共识节点,每个所述共识节点根据通知到的多个所述共识节点的所述投票结果颁发所述证书;
确定为所述待考察区块颁发所述证书的所述共识节点,作为所述颁证共识节点。
4.根据权利要求3所述的区块链共识方法,其特征在于,所述将所述待考察区块发送到所述区块链网络中的其它所述共识节点投票,包括:
将所述待考察区块用所述目标共识节点的密钥签名,发送到其它所述共识节点,以便其它所述共识节点接收到所述签名后,用所述目标共识节点的所述密钥验签,将所述待考察区块存储到其它所述共识节点的内存池,并用所述待考察区块中的摘要对所述内存池中的所述待考察区块进行验证,如果验证成功,则生成投票结果,向所述区块链网络中的其它所述共识节点广播。
5.根据权利要求3所述的区块链共识方法,其特征在于,所述区块链网络包含3f+1个所述共识节点,其中,f为正整数;
所述根据通知到的多个所述共识节点的所述投票结果颁发所述证书,包括:
确定至少接收到2f+1个所述共识节点的所述投票结果;
为所述待考察区块颁发所述证书。
6.根据权利要求2所述的区块链共识方法,其特征在于,
所述获取在各个所述共识周期各个所述共识节点的所述待上链区块,包括:从所述目标共识节点存储的第一数据结构中,获取在各个所述共识周期各个所述共识节点的所述待上链区块,其中,所述第一数据结构包含所述共识周期、与所述共识周期下的多个所述待上链区块的映射,所述待上链区块包含前一所述共识周期中为所述待上链区块颁发的多个所述证书;
所述确定多个所述共识节点中为所述待考察区块颁发证书的颁证共识节点,包括:基于所述待考察区块中的多个所述证书,确定所述颁证共识节点。
7.根据权利要求6所述的区块链共识方法,其特征在于,所述证书中包含颁发所述证书的证书共识周期、和颁发所述证书的所述共识节点;
所述基于所述待考察区块中的多个所述证书,确定所述颁证共识节点,包括:
确定所述证书共识周期是所述待上链区块所在的所述共识周期的上一个共识周期;
将颁发所述证书的所述共识节点确定为所述颁证共识节点。
8.根据权利要求1所述的区块链共识方法,其特征在于,所述区块链网络包含3f+1个所述共识节点,其中,f为正整数;所述目标共识周期通过以下方式在多个所述共识周期中确定:
将所述目标共识节点的具有等待共识的所述待上链区块的多个所述共识周期按时间顺序排序,得到多个所述共识周期的序号;
将所述共识周期的序号模第一值后的余数为同一第二值的所述共识周期,确定为候选共识周期,其中,所述第一值为正整数;
将所述候选共识周期中至少具有2f+1个等待上链的所述待上链区块、与当前共识周期间隔时间最小的所述候选共识周期,作为所述目标共识周期。
9.根据权利要求8所述的区块链共识方法,其特征在于,所述在所述目标共识节点在目标共识周期具有的等待共识的所述待上链区块中选取主待上链区块,包括:
将所述目标共识周期的所述序号与所述区块链网络中的共识节点数目进行模运算,将所述模运算的余数作为所述待上链区块的索引,在所述目标共识节点在目标共识周期具有的等待共识的多个所述待上链区块中,确定候选待上链区块;
如果所述候选待上链区块在所述目标共识周期的前一共识周期中得到的证书数达到f+1以上,将所述候选待上链区块确定为所述主待上链区块。
10.根据权利要求9所述的区块链共识方法,其特征在于,在所述如果所述候选待上链区块在所述目标共识周期的前一共识周期中得到的证书数达到f+1以上,将所述候选待上链区块确定为所述主待上链区块之后,所述区块链共识方法还包括:
如果所述候选待上链区块在所述目标共识周期的前一共识周期中得到的证书数未达到f+1以上,则顺序确定所述候选待上链区块之后的各个所述待上链区块在所述目标共识周期的前一共识周期中得到的所述证书数,如果得到的所述证书数达到f+1以上,将所述待上链区块确定为所述主待上链区块。
11.根据权利要求1所述的区块链共识方法,其特征在于,所述在所述区块依赖关系图中,确定以所述主待上链区块为根节点的依赖树,包括:
将待分解区块初始化为所述主待上链区块,将待考察共识周期初始化为所述目标共识周期;
执行第一过程,所述第一过程包括:在所述区块依赖关系图中,查找在所述待考察共识周期的前一共识周期中与所述待分解区块具有所述依赖关系的各个所述待上链区块,用每个所述待上链区块轮流更新所述待分解区块,用所述前一共识周期更新所述待考察共识周期,重复第一过程,从而得到所述以所述主待上链区块为所述根节点的所述依赖树。
12.根据权利要求11所述的区块链共识方法,其特征在于,所述重复第一过程,从而得到以所述主待上链区块为所述根节点的所述依赖树,包括:
获取与当前共识周期间隔最小的、所述待上链区块都已上链的截止共识周期;
重复所述第一过程,直到所述前一共识周期为所述截止共识周期,从而得到以所述主待上链区块为所述根节点的所述依赖树。
13.根据权利要求12所述的区块链共识方法,其特征在于,所述获取与当前共识周期间隔最小的、所述待上链区块都已上链的截止共识周期,包括:
从所述目标共识节点的内存池中,获取与当前共识周期间隔最小的、所述待上链区块都已上链的截止共识周期;
在按照所述上链顺序,将多个所述待上链区块上链之后,所述区块链共识方法还包括:
用所述目标共识周期,更新所述内存池中的所述截止共识周期。
14.根据权利要求12所述的区块链共识方法,其特征在于,所述获取所述目标共识节点的区块依赖关系图,包括:在所述目标共识节点的具有等待共识的所述待上链区块的多个所述共识周期中,将每连续L个所述共识周期组合成一个超周期,在每个所述超周期的最后一个所述共识周期中获取所述目标共识节点的所述区块依赖关系图,其中,L为正整数;
所述目标共识周期是每个所述超周期中预定顺序位的所述共识周期;
所述截止共识周期是当前共识周期所在的所述超周期的前一个超周期中的所述目标共识周期。
15.根据权利要求11所述的区块链共识方法,其特征在于,所述依赖树以所述主待上链区块为所述根节点,以各个所述共识周期为所述依赖树的各个层,以所述共识周期中的各个所述待上链区块为所述层中的节点;
所述基于所述依赖树中各个所述待上链区块的所述依赖关系,确定各个所述待上链区块的上链顺序,包括:
将待处理层初始化为所述依赖树的最下一层,并初始化排序列表为空集;
执行第二过程,所述第二过程包括:从所述待处理层的未取出节点中,取出与所述待处理层的上一层的同一节点具有依赖关系的至少一个所述节点,放入所述排序列表;将所述上一层的所述同一节点放入所述排序列表;如果所述上一层中尚有所述节点未取出,则返回从所述待处理层的未取出节点中,取出与所述待处理层的上一层的同一节点具有依赖关系的至少一个所述节点,放入所述排序列表的步骤;在将任何一个所述节点取出并放入所述排序列表时,如果同一层中的所述节点已都取出,则用所述节点都已取出的所述层的上一层更新所述待处理层,重复所述第二过程,直到取出所述根节点;
将所述排序列表中的所述节点的顺序作为所述上链顺序。
16.根据权利要求1所述的区块链共识方法,其特征在于,所述待上链区块由所述共识节点通过以下方式生成:
从客户端接收待上链事务,放入所述共识节点的内存池;
当所述内存池中的待上链事务数目达到第一阈值,或者与生成上一个所述待上链区块的时间间隔达到第二阈值时,将所述内存池中的所述待上链事务取出,打包成所述待上链区块。
17.一种区块链共识装置,其特征在于,所述区块链共识装置位于区块链网络中的目标共识节点,在每个共识周期所述区块链网络中的每个共识节点生成待上链区块,发送给其它所述共识节点共识,从而所述目标共识节点在每个所述共识周期有来自多个所述共识节点的所述待上链区块等待共识,所述区块链共识装置包括:
获取单元,用于获取所述目标共识节点的区块依赖关系图,所述区块依赖关系图包含所述目标共识节点在各个所述共识周期具有的、来自各个所述共识节点的等待共识的所述待上链区块、以及所述待上链区块与前一所述共识周期的各个所述待上链区块的依赖关系;
区块选取单元,用于在所述目标共识节点在目标共识周期具有的等待共识的所述待上链区块中选取主待上链区块,所述目标共识周期属于多个所述共识周期;
第一确定单元,用于在所述区块依赖关系图中,确定以所述主待上链区块为根节点的依赖树;
上链单元,用于基于所述依赖树中各个所述待上链区块的所述依赖关系,确定各个所述待上链区块的上链顺序,从而按照所述上链顺序,将多个所述待上链区块上链。
18.一种电子设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现根据权利要求1至16任意一项所述的区块链共识方法。
19.一种计算机可读存储介质,所述存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现根据权利要求1至16任意一项所述的区块链共识方法。
20.一种计算机程序产品,该计算机程序产品包括计算机程序,所述计算机程序被计算机设备的处理器读取并执行,使得该计算机设备执行根据权利要求1至16任意一项所述的区块链共识方法。
CN202311505893.0A 2023-11-13 2023-11-13 区块链共识方法、相关装置和介质 Active CN117251889B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311505893.0A CN117251889B (zh) 2023-11-13 2023-11-13 区块链共识方法、相关装置和介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311505893.0A CN117251889B (zh) 2023-11-13 2023-11-13 区块链共识方法、相关装置和介质

Publications (2)

Publication Number Publication Date
CN117251889A CN117251889A (zh) 2023-12-19
CN117251889B true CN117251889B (zh) 2024-03-01

Family

ID=89126648

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311505893.0A Active CN117251889B (zh) 2023-11-13 2023-11-13 区块链共识方法、相关装置和介质

Country Status (1)

Country Link
CN (1) CN117251889B (zh)

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108829749A (zh) * 2018-05-24 2018-11-16 深圳前海益链网络科技有限公司 一种基于区块链的对象关联封装存储方法
CN109949157A (zh) * 2019-03-08 2019-06-28 矩阵元技术(深圳)有限公司 一种区块链共识的处理方法、装置及系统
CN113286302A (zh) * 2021-05-01 2021-08-20 贵州大学 一种用于无线传感器网络蠕虫检测的基于区块链的节点身份认证方案
CN114528565A (zh) * 2022-01-21 2022-05-24 广东海洋大学 一种基于区块链的敏感数据高效上链算法
CN114741446A (zh) * 2022-03-07 2022-07-12 杭州趣链科技有限公司 一种数据上链方法、装置、终端及存储介质
WO2023283693A1 (en) * 2021-07-16 2023-01-19 Commonwealth Scientific And Industrial Research Organisation Digital certificates
CN115988001A (zh) * 2021-10-14 2023-04-18 腾讯科技(深圳)有限公司 区块链系统的共识投票处理方法、装置、设备以及介质
CN116566660A (zh) * 2023-04-21 2023-08-08 石家庄铁道大学 基于医疗区块链的身份认证方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11804963B2 (en) * 2021-04-29 2023-10-31 International Business Machines Corporation System and method for permissioned blockchain access into a computing network

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108829749A (zh) * 2018-05-24 2018-11-16 深圳前海益链网络科技有限公司 一种基于区块链的对象关联封装存储方法
CN109949157A (zh) * 2019-03-08 2019-06-28 矩阵元技术(深圳)有限公司 一种区块链共识的处理方法、装置及系统
CN113286302A (zh) * 2021-05-01 2021-08-20 贵州大学 一种用于无线传感器网络蠕虫检测的基于区块链的节点身份认证方案
WO2023283693A1 (en) * 2021-07-16 2023-01-19 Commonwealth Scientific And Industrial Research Organisation Digital certificates
CN115988001A (zh) * 2021-10-14 2023-04-18 腾讯科技(深圳)有限公司 区块链系统的共识投票处理方法、装置、设备以及介质
CN114528565A (zh) * 2022-01-21 2022-05-24 广东海洋大学 一种基于区块链的敏感数据高效上链算法
CN114741446A (zh) * 2022-03-07 2022-07-12 杭州趣链科技有限公司 一种数据上链方法、装置、终端及存储介质
CN116566660A (zh) * 2023-04-21 2023-08-08 石家庄铁道大学 基于医疗区块链的身份认证方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
基于区块链技术的密钥生命周期演示设计;刘天野 等;密码学报;第404-417页 *

Also Published As

Publication number Publication date
CN117251889A (zh) 2023-12-19

Similar Documents

Publication Publication Date Title
JP7285840B2 (ja) プルーフ検証に基づいてオフ・チェーン・データを認証するシステム及び方法
CN111445333B (zh) 区块生成方法、装置、计算机设备以及存储介质
Amir et al. Steward: Scaling byzantine fault-tolerant replication to wide area networks
CN108769230B (zh) 交易数据存储方法、装置、服务器及存储介质
US20230037932A1 (en) Data processing method and apparatus based on blockchain network, and computer device
CN110851537A (zh) 一种基于区块链分片技术的共识方法
KR102601973B1 (ko) 시스템 아키텍처 및 시스템 아키텍처에서 데이터를 처리하는 방법
CN111931220B (zh) 区块链网络的共识处理方法、装置、介质及电子设备
CN112036878B (zh) 数据处理方法及装置
CN113888164A (zh) 区块链交易池实现方法、装置、计算机设备和存储介质
US20220294637A1 (en) System and Method of Establishing a Trusted Relationship in a Distributed System
CN114172659B (zh) 区块链系统中的消息传输方法、装置、设备及存储介质
CN112134883A (zh) 基于可信计算进行节点间信任关系快速认证的方法、装置及相关产品
CN111385096B (zh) 一种区块链网络系统、签名处理方法、终端及存储介质
Baniata et al. Prifob: a privacy-aware fog-enhanced blockchain-based system for global accreditation and credential verification
CN117251889B (zh) 区块链共识方法、相关装置和介质
CN116132058A (zh) 区块链共识方法、装置、设备及计算机可读存储介质
Wu et al. Scaling proof-of-authority protocol to improve performance and security
CN114090682A (zh) 一种多通道联盟链上链方法、装置、设备及存储介质
US10177918B2 (en) User permission check system
KR20210127231A (ko) 동력화된 ID (Energized Identity) 기반 블록체인
CN112116461A (zh) 区块链及其共识方法
Hao et al. BitFT: An Understandable, Performant and Resource-Efficient Blockchain Consensus
CN116032494B (zh) 数据交互方法、区块链预言机、设备及介质
CN117915335A (zh) 移动边缘计算环境中的多副本数据完整性联合验证方法

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
GR01 Patent grant
GR01 Patent grant