CN117411894A - 共识网络的数据处理方法、装置、程序产品、设备和介质 - Google Patents
共识网络的数据处理方法、装置、程序产品、设备和介质 Download PDFInfo
- Publication number
- CN117411894A CN117411894A CN202210800712.6A CN202210800712A CN117411894A CN 117411894 A CN117411894 A CN 117411894A CN 202210800712 A CN202210800712 A CN 202210800712A CN 117411894 A CN117411894 A CN 117411894A
- Authority
- CN
- China
- Prior art keywords
- block
- consensus
- node
- network
- sub
- 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.)
- Pending
Links
- 238000003672 processing method Methods 0.000 title claims abstract description 15
- 238000012545 processing Methods 0.000 claims abstract description 165
- 238000000034 method Methods 0.000 claims abstract description 104
- 230000008569 process Effects 0.000 claims abstract description 49
- 238000003860 storage Methods 0.000 claims description 27
- 238000004590 computer program Methods 0.000 claims description 20
- 230000000977 initiatory effect Effects 0.000 claims description 3
- 238000004891 communication Methods 0.000 abstract description 16
- 238000005516 engineering process Methods 0.000 description 16
- 238000010586 diagram Methods 0.000 description 15
- 230000006870 function Effects 0.000 description 12
- 238000004422 calculation algorithm Methods 0.000 description 5
- 230000005540 biological transmission Effects 0.000 description 4
- 230000009286 beneficial effect Effects 0.000 description 3
- 238000013500 data storage Methods 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 238000013473 artificial intelligence Methods 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000006855 networking Effects 0.000 description 1
- 230000007480 spreading Effects 0.000 description 1
- 238000003892 spreading Methods 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/02—Details
- H04L12/16—Arrangements for providing special services to substations
- H04L12/18—Arrangements for providing special services to substations for broadcast or conference, e.g. multicast
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1097—Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Information Transfer Between Computers (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本申请公开了一种共识网络的数据处理方法、装置、程序产品、设备和介质,该方法包括:第一共识节点接收第二共识节点在共识网络的第二共识子网络广播的第一区块;第一区块的共识过程是由共识网络中第一主节点发起;在第二共识子网络中对第一区块进行共识处理;若第一区块在第一共识节点处共识通过,则在共识网络的第一共识子网络中广播第一区块,使第一区块在第一共识子网络中被执行共识处理;在共识网络中广播第一共识节点针对第一区块的共识通过结果,获取第一区块在共识网络中共识通过结果的第一数量,根据第一数量对第一区块进行上链处理。采用本申请,可减少对区块进行共识时的通信量,并提高对区块进行共识的效率及性能。
Description
技术领域
本申请涉及区块链技术领域,尤其涉及一种共识网络的数据处理方法、装置、程序产品、设备和介质。
背景技术
区块链(Blockchain)是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。区块链网络中的区块需要在共识网络中被共识通过后才能进行上链处理。
现有应用中,在共识网络对区块进行共识的过程中,区块需要在共识网络的各个共识节点之间进行广播后共识,而若共识网络的规模很大,共识节点的数量很多,则会导致在共识网络对区块进行广播共识时的通信量极大,进而导致整个共识网络的处理性能严重下降。
发明内容
本申请提供了一种共识网络的数据处理方法、装置、程序产品、设备和介质,可减少在共识网络对区块进行共识的过程中的通信量,并提高共识网络对区块进行共识的效率及性能。
本申请一方面提供了一种共识网络的数据处理方法,共识网络包含N个共识节点,N为正整数,N个共识节点包括第一主节点;该方法由第一共识节点执行,第一共识节点是N个共识节点中除第一主节点之外的任一个;该方法包括:
接收第二共识节点在第二共识子网络中广播的第一区块;第二共识子网络包含N个共识节点中的K个共识节点,第一共识节点与第二共识节点均属于第二共识子网络,K为小于N的正整数;第二共识节点是N个共识节点中除第一共识节点之外的任一个;第一区块的共识过程是由第一主节点发起;
在第二共识子网络中对第一区块进行共识处理;若第一区块在第一共识节点处共识通过,则在第一共识节点所属的第一共识子网络中广播第一区块,使第一区块在第一共识子网络中继续被执行共识处理;第一共识子网络包含N个共识节点中的M个共识节点;M为小于N的正整数;
在共识网络中广播第一共识节点针对第一区块的共识通过结果,并获取第一区块在共识网络中的共识通过结果的第一数量,以及根据第一数量对第一区块进行上链处理。
本申请一方面提供了一种共识网络的数据处理装置,共识网络包含N个共识节点,N为正整数,N个共识节点包括第一主节点;该装置应用于第一共识节点,第一共识节点是N个共识节点中除第一主节点之外的任一个;该装置包括:
接收模块,用于接收第二共识节点在第二共识子网络中广播的第一区块;第二共识子网络包含N个共识节点中的K个共识节点,第一共识节点与第二共识节点均属于第二共识子网络,K为小于N的正整数;第二共识节点是N个共识节点中除第一共识节点之外的任一个;第一区块的共识过程是由第一主节点发起;
共识模块,用于在第二共识子网络中对第一区块进行共识处理;若第一区块在第一共识节点处共识通过,则在第一共识节点所属的第一共识子网络中广播第一区块,使第一区块在第一共识子网络中继续被执行共识处理;第一共识子网络包含N个共识节点中的M个共识节点;M为小于N的正整数;
获取模块,用于在共识网络中广播第一共识节点针对第一区块的共识通过结果,并获取第一区块在共识网络中的共识通过结果的第一数量,以及根据第一数量对第一区块进行上链处理。
可选的,K个共识节点中除第二共识节点之外的共识节点,是由第二共识节点在N个共识节点中选取的K-1个与第二共识节点相联通的共识节点;M个共识节点中除第一共识节点之外的共识节点,是由第一共识节点在N个共识节点中选取的M-1个与第一共识节点相联通的共识节点;
若第二共识节点是第一主节点,则第二共识节点广播的第一区块是由第二共识节点生成;若第二共识节点不是第一主节点,则第二共识节点广播的第一区块,是由N个共识节点中除第一共识节点和第二共识节点之外的任一共识节点向第二共识节点广播得到。
可选的,共识网络中任一共识节点针对任一区块的共识通过结果是指任一共识节点针对任一区块的节点签名,第一区块具有关联的节点签名集合,节点签名集合包含第一共识节点针对第一区块的节点签名;
获取模块获取第一区块在共识网络中的共识通过结果的第一数量,以及根据第一数量对第一区块进行上链处理的方式,包括:
在第一区块在共识网络中被执行共识处理的过程中,接收N个共识节点中除第一共识节点之外的共识节点广播的针对第一区块的节点签名,并将接收到的节点签名添加到节点签名集合;
获取节点签名集合中的节点签名的第一数量,若第一数量大于或等于数量阈值,则对第一区块进行上链处理。
可选的,若第二共识节点是第一主节点,则K个共识节点包含第二主节点,第二主节点是指N个共识节点中用于对第一主节点进行主节点轮换的下一个主节点;
第二主节点用于在对第二共识节点广播的第一区块共识通过后,在共识网络中发起针对第二区块的共识过程,第二区块对应的区块高度是第一区块对应的区块高度的下一个区块高度。
可选的,第一区块对应的区块高度是第一区块高度;上述装置还用于:
获取待共识的第三区块;第三区块是由第三主节点在超时未获取到第一区块时所发起的需要进行共识的区块,第三区块对应的区块高度是第一区块高度,第三主节点是N个共识节点中在第一主节点之后用于进行主节点轮换的共识节点;
对第三区块进行共识处理;若完成对第三区块的共识处理,则缓存第三区块。
可选的,上述装置还用于:
若完成对第一区块的共识处理,则缓存第一区块;
上述装置还用于:
若获取到第三区块在共识网络中的共识通过结果的第二数量,且第二数量大于或等于数量阈值,则对第三区块进行上链处理,并删除缓存的第一区块。
可选的,获取模块根据第一数量对第一区块进行上链处理的方式,包括:
若第一数量大于或等于数量阈值,则对第一区块进行上链处理,并删除缓存的第三区块。
可选的,上述装置还用于:
根据缓存的第一区块的子区块的数量确定第一区块的区块权重;
根据缓存的第三区块的子区块的数量确定第三区块的区块权重;
其中,第一区块的区块权重和第三区块的区块权重用于确定第四区块的父区块,第四区块对应的区块高度是第二区块高度,第二区块高度是第一区块高度的下一个区块高度。
可选的,上述装置还用于:
获取待共识的第四区块;
若第一区块的区块权重大于第三区块的区块权重,则将第一区块作为第四区块的父区块,并对第四区块进行共识处理;
若第一区块的区块权重小于第三区块的区块权重,则将第三区块作为第四区块的父区块,并对第四区块进行共识处理。
可选的,若第四区块在共识网络中的共识通过结果的数量大于或等于数量阈值,且第四区块的父区块是第一区块,则第一共识节点用于删除缓存的第三区块及第四区块的同级区块,并用于对第一区块及第四区块进行上链处理;
若第四区块在共识网络中的共识通过结果的数量大于或等于数量阈值,且第四区块的父区块是第三区块,则第一共识节点用于删除缓存的第一区块及第四区块的同级区块,并用于对第三区块及第四区块进行上链处理;
其中,任一区块的同级区块是指对应的区块高度与任一区块对应的区块高度相同的区块,第一区块与第三区块互为同级区块。
可选的,上述装置还用于:
若完成对第四区块的共识处理,则缓存第四区块;
基于缓存的第四区块及第四区块的父区块,更新第一区块的区块权重、第三区块的区块权重及第四区块的区块权重。
本申请一方面提供了一种计算机设备,包括存储器和处理器,存储器存储有计算机程序,计算机程序被处理器执行时,使得处理器执行本申请中一方面中的方法。
本申请一方面提供了一种计算机可读存储介质,该计算机可读存储介质存储有计算机程序,该计算机程序包括程序指令,该程序指令被处理器执行时使该处理器执行上述一方面中的方法。
根据本申请的一个方面,提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述一方面等各种可选方式中提供的方法。
本申请中,第一共识节点可以接收第二共识节点在第二共识子网络中广播的第一区块;第二共识子网络包含N个共识节点中的K个共识节点,第一共识节点与第二共识节点均属于第二共识子网络,K为小于N的正整数;第二共识节点是N个共识节点中除第一共识节点外的任一个;第一区块的共识过程是由共识网络中第一主节点发起;在第二共识子网络中对第一区块进行共识处理;若第一区块在第一共识节点处共识通过,则在第一共识节点所属的第一共识子网络中广播第一区块,使第一区块在第一共识子网络中继续被执行共识处理;第一共识子网络包含N个共识节点中的M个共识节点;M为小于N的正整数;在共识网络中广播第一共识节点针对第一区块的共识通过结果,并获取第一区块在共识网络中的共识通过结果的第一数量,以及根据第一数量对第一区块进行上链处理。由此可见,本申请提出的方法各个共识节点都可以将区块在共识网络的小网络内(如第一共识子网络和第二共识子网络)进行广播,进而也在小网络内对区块进行共识处理,这可以减少在对区块进行共识时的通信量,并可以提升共识网络对于区块的共识效率及性能。
附图说明
为了更清楚地说明本申请或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请提供的一种共识网络的网络架构的结构示意图;
图2是本申请提供的一种区块共识的场景示意图;
图3是本申请提供的一种共识网络的数据处理方法的流程示意图;
图4a-图4b是本申请提供的一种区块广播的场景示意图;
图5是本申请提供的一种区块共识的场景示意图;
图6是本申请提供的一种区块提案内容的场景示意图;
图7是本申请提供的一种区块处理方法的流程示意图;
图8是本申请提供的一种设置区块权重的场景示意图;
图9是本申请提供的一种区块处理的场景示意图;
图10是本申请提供的一种区块共识的流程示意图;
图11是本申请提供的一种附加方法的流程示意图;
图12是本申请提供的一种共识网络的数据处理装置的结构示意图;
图13是本申请提供的一种计算机设备的结构示意图。
具体实施方式
下面将结合本申请中的附图,对本申请中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请涉及到区块链的相关技术。其中,区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。区块链(Blockchain),本质上是一个去中心化的数据库,是一串使用密码学方法相关联产生的数据块,每一个数据块中包含了一批次网络交易的信息,用于验证其信息的有效性(防伪)和生成下一个区块。区块链可以包括区块链底层平台、平台产品服务层以及应用服务层。区块链中包括一系列按照产生的先后时间顺序相互接续的区块(Block),新区块一旦加入到区块链中就不会再被移除,区块中记录了区块链系统中节点提交的记录数据。本申请中,可以将大规模的共识网络变为一个个小规模的共识子网络来实现对区块的共识,以提升共识网络对区块进行共识的性能以及效率。
本申请涉及到云技术。其中,云技术(Cloud Technology)是指在广域网或局域网内将硬件、软件、网络等系列资源统一起来,实现数据的计算、储存、处理和共享的一种托管技术。
云技术基于云计算商业模式应用的网络技术、信息技术、整合技术、管理平台技术、应用技术等的总称,可以组成资源池,按需所用,灵活便利。云计算技术将变成重要支撑。技术网络系统的后台服务需要大量的计算、存储资源,如视频网站、图片类网站和更多的门户网站。伴随着互联网行业的高度发展和应用,将来每个物品都有可能存在自己的识别标志,都需要传输到后台系统进行逻辑处理,不同程度级别的数据将会分开处理,各类行业数据皆需要强大的系统后盾支撑,只能通过云计算来实现。
本申请中所涉及到的云技术可以指,区块链节点(如共识节点)之间可以通过“云”进行通信。
首先,需要进行说明的是,本申请所采集的所有数据(如区块及区块中的业务数据)都是在该业务数据所属对象(如用户)同意并授权的情况下进行采集的,且相关数据的收集、使用和处理需要遵守相关国家和地区的相关法律法规和标准。
请参见图1,图1是本申请提供的一种共识网络的网络架构的结构示意图。如图1所示,该共识网络可以包括若干个共识节点,包括共识节点1~共识节点N,N为正整数,N的具体取值根据实际应用场景确定。任一个共识节点可以是由一个或者多个计算机设备构成,该计算机设备可以是终端设备也可以是服务器等。
若构成共识节点的计算机设备是服务器,则该服务器可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN、以及大数据和人工智能平台等基础云计算服务的云服务器。若构成共识节点的计算机设备是终端设备,则该终端设备可以是:智能手机、平板电脑、笔记本电脑、桌上型电脑、智能电视、车载终端等智能终端。
请一并参见图2,图2是本申请提供的一种区块共识的场景示意图。如图2所示,共识网络中的主节点可以进行轮换,共识节点1可以是当前对区块发起提案共识的主节点。共识节点1可以先将需要共识的区块广播到对应的共识子网络1,该共识子网络1可以包含共识节点1、共识节点2、共识节点3和共识节点4。
进而,在共识子网络1中可以对共识节点1发起的区块进行共识,共识完成之后,共识子网络1中的各个共识节点可以分别得到自己针对区块的共识结果,该共识结果是指各个共识节点自己分别针对区块的共识结果(如共识通过结果或共识不通过结果),而不是在共识子网络1中所有共识节点针对区块最终的一个共识结果。各个共识节点针对区块的共识结果可以相同也可以不同。
若区块在共识节点2处共识通过,则共识节点2还可以继续将区块广播到对应的共识子网络2中,该共识子网络2中可以包括共识节点2、共识节点5、共识节点6和共识节点7,进而在共识子网络2中可以继续对共识节点发起的区块进行共识,共识完成之后,共识子网络2中的各个共识节点也可以分别得到自己针对区块的共识结果。
同理,若区块在共识节点3处共识通过,则共识节点3还可以继续将区块广播到对应的共识子网络3中,该共识子网络3中可以包括共识节点3、共识节点8、共识节点9和共识节点10,进而在共识子网络3中可以继续对共识节点发起的区块进行共识,共识完成之后,共识子网络3中的各个共识节点也可以分别得到自己针对区块的共识结果。
同理,若区块在共识节点4处共识通过,则共识节点4还可以继续将区块广播到对应的共识子网络4中,该共识子网络4中可以包括共识节点4、共识节点11、共识节点12和共识节点13,进而在共识子网络4中可以继续对共识节点发起的区块进行共识,共识完成之后,共识子网络4中的各个共识节点也可以分别得到自己针对区块的共识结果。
继而,共识节点5、共识节点6、共识节点7、共识节点8、共识节点9、共识节点10、共识节点11、共识节点12和共识节点13中对区块共识通过的共识节点还可以继续将区块广播到给共识网络中更多的共识节点(如广播到对应的共识子网络)对区块继续进行共识处理,使得通过在各个共识子网络中对区块进行扩散广播共识后,达到区块在整个共识网络进行共识的目的。
进而,共识网络中对区块共识通过的共识节点可以在全网(整个共识网络)范围内广播各自针对区块的共识通过结果,使得各个共识节点在共识网络获取到针对区块的数量大于或等于数量阈值的共识通过结果,则表明区块在全网共识通过,可以对区块进行上链处理,如可以将区块添加到共识网络所属的区块链上。上述对区块进行共识的具体过程还可以参见下述图3对应实施例中的描述。
采用本申请提供的方法,通过在各个小网络(如各个共识子网络)对区块进行共识,而不在整个大规模的共识网络对区块进行共识,可以降低对区块进行共识的过程中的通信复杂度,减少对区块进行共识过程中的通信量,并提高对区块的共识效率,提升整个共识网络对于区块的共识性能。
请参见图3,图3是本申请提供的一种共识网络的数据处理方法的流程示意图。如图3所示,该方法可以包括:
步骤S101,接收第二共识节点在第二共识子网络中广播的第一区块;第二共识子网络包含N个共识节点中的K个共识节点,第一共识节点与第二共识节点均属于第二共识子网络,K为小于N的正整数;第二共识节点是N个共识节点中除第一共识节点之外的任一个;第一区块的共识过程是由第一主节点发起。
可选的,共识网络可以包括N个共识节点,该N个共识节点是可以对需要进行上链的区块进行共识处理的区块链节点,N为正整数,N的具体数值可以根据实际应用场景确定。任一个共识节点可以是由一个或者多个计算机设备构成,该计算机设备可以是服务器也可以终端设备,具体也可以根据实际应用场景确定,对此不做限制。
上述N个共识节点可以包括第一主节点,该第一主节点是当前需要对区块进行提案的主节点,该第一主节点是当前用于发起对区块进行共识的共识节点。因此,可以理解的是,本申请实施例中的执行主体可以是第一共识节点,该第一共识节点可以是N个共识节点中除第一主节点外的任意一个共识节点。
因此,第一共识节点可以接收到第二共识节点在第二共识子网络中广播的第一区块,该第一区块是当前需要进行共识的区块,该第一区块的共识过程可以是由上述第一主节点所发起,第一区块可以是由第一主节点最先发起提案,第一区块可以是由第一主节点所生成,该第一区块可以包含需要进行上链的任意业务数据,如交易数据等。
可选的,本申请实施例所提供的方法可以用于对TBFT(TendermintBFT,一种共识算法)的共识过程的改进,在TBFT中,共识网络中的主节点是进行轮换的,如共识网络中各个共识节点都可以分别具有对应的节点编号,共识网络中的主节点可以根据各个共识节点的节点编号进行依次轮换,或者共识网络中的主节点还可以根据其他策略进行轮换,共识网络中的各个共识节点都可以知道主节点的轮换策略,因此,在使用TBFT的共识网络中,各个共识节点之间无需进行相互通知,也可以知道各个时刻的各个主节点是哪个共识节点。
因此,本申请提供的方法可以用于将TBFT中的大规模的共识网络变成若干个小网络(如若干个共识子网络)来对区块进行共识,以减少在共识过程中数据广播时的数据量以及并降低共识过程中数据广播时的通信复杂度。
上述第二共识节点可以是上述N个共识节点中除第一共识节点之外的任意一个共识节点,上述第二共识子网络可以理解为是第二共识节点对应的共识子网络,该第二共识子网络是共识网络中的一个子网络(也可以称为小网络),该第二共识子网络可以包含K个共识节点,K为小于N的正整数,K的数值相较于N的数值可以较小,K的数值可以根据实际应用场景确定。第一共识节点和第二共识节点均属于第二共识子网络,即第二共识子网络包含第一共识节点和第二共识节点。
上述K个共识节点中除第二共识节点之外的共识节点,可以是由第二共识节点在N个共识节点中选取(可以是随机选取)的K-1个与第二共识节点相互联通(即连通)的共识节点,该K-1个共识节点可以是第二共识节点在获取到需要共识的区块时,可以将该区块广播至的共识节点。或者,可选的,该K-1个共识节点也可以是根据路由表所选取的与第二共识节点路由较近的共识节点,或者,该K-1个共识节点也可以是预先设置的第二共识节点可以将需要共识的区块广播至的共识节点,若该K-1个共识节点是预先设置的,则该K-1个共识节点可以间隔性地被更新,如每隔一段时间(如每隔一个周期)就可以被更新,更新时,K的数值也可以被更新,即第二共识节点可以将需要共识的区块广播至的共识节点的数量也可以是变化的,换句话说,第二共识节点可以将需要共识的区块广播至的若干个共识节点可以是定期更新且动态变化的。可选的,具体如何确定第二共识节点对应的第二共识子网络可以根据实际应用场景确定,对此不做限制。
上述第二共识子网络可以理解为是第二共识节点在广播第一区块时,所形成的需要广播第一区块的一个虚拟的共识子网络,该共识子网络可以不是预先划分出来的一个独立的子网络。
其中,可以理解的是,若第二共识节点是第一主节点,则第二共识节点广播的第一区块可以是由第二共识节点生成并发起对第一区块的共识过程的;而若第二共识节点不是第一主节点,则第二共识节点广播的第一区块可以是上述N个共识节点中除第一共识节点和第二共识节点之外的任一个共识节点向第二共识节点广播得到的,N个共识节点中除第一共识节点和第二共识节点之外的任一个共识节点向第二共识节点广播第一区块的原理,与第二共识节点向第一共识节点广播第一区块的原理相同,如也可以是向对应的共识子网络广播第一区块,该共识子网络可以包含第二共识节点。
换句话说,第一区块最开始可以是由第一主节点生成并广播到对应的共识子网络中的,第一主节点对应的共识子网络中各个共识节点接收到的第一区块可以是由第一主节点所广播的,N个共识节点中除了第一主节点对应共识子网络包含的共识节点之外的共识节点接收到的第一区块,就可以是由N个共识节点中除了第一主节点之外的共识节点所广播的。
步骤S102,在第二共识子网络中对第一区块进行共识处理;若第一区块在第一共识节点处共识通过,则在第一共识节点所属的第一共识子网络中广播第一区块,使第一区块在第一共识子网络中继续被执行共识处理;第一共识子网络包含N个共识节点中的M个共识节点;M为小于N的正整数。
可选的,第一共识节点在接收到第二共识节点广播的第一区块后,就可以在第二共识子网络中对第一区块进行共识处理。即第二共识子网络中各个共识节点之间可以对第一区块一起进行共识处理,第二共识子网络中各个共识节点可以采用BTFT共识算法对第一区块进行共识处理,该共识处理可以包含3个共识阶段,包括propose阶段(提案阶段)、prevote(预投票阶段)和precommit(预提交阶段),其中,在预投票阶段和预提交阶段中,第二共识子网络中各个共识节点之间存在需要相互广播的数据(如对第一区块的投票数据)。
第二共识子网络中各个共识节点一起通过上述3个共识阶段对第一区块进行共识之后,第二共识子网络中各个共识节点就可以得到各自针对第一区块的共识结果,该共识结果可以是共识通过结果或者是共识不通过结果,不同共识节点所得到的自己针对第一区块的共识结果可以相同也可以不同。该共识通过结果表明对第一区块共识通过,同意将第一区块进行上链,反之,该共识不通过结果则是表明对第一区块共识不通过,不同意将第一区块进行上链。
可以理解的是,上述第一主节点是当前整个共识网络的主节点,用于对区块进行提案,而不论第二共识节点是否是第一主节点,第二共识节点可以理解为是第二共识子网络中的“主节点”,即可以理解为,在第二共识子网络中,是由第二共识节点发起对第一区块的提案共识。
因此,若第一区块在第一共识节点处共识通过(即第一共识节点得到自己针对第一区块的共识通过结果),则第一共识节点可以继续在对应的共识子网络(可以称之为第一共识子网络)中广播第一区块,使得第一区块在第一共识子网络中继续被执行共识处理。
同理,第一共识子网络可以是共识网络中的一个子网络(小网络),第一共识子网络中可以包含M个共识节点,M为小于N的正整数,M的数值可以与上述K的数值相同,或者也可以不同,具体可以根据实际应用场景确定。该M个共识节点中除第一共识节点之外的共识节点,可以是由第一共识节点在N个共识节点中选取(如随机选取)的M-1个与第一共识节点相互联通的共识节点。
该M-1个共识节点可以是第一共识节点在获取到需要共识的区块(如第一区块)时,可以将该区块广播至的共识节点。或者,可选的,该M-1个共识节点也可以是根据路由表所选取的与第一共识节点路由较近的共识节点,或者,该M-1个共识节点也可以是预先设置的第一共识节点可以将需要共识的区块广播至的共识节点,若该M-1个共识节点是预先设置的,则该M-1个共识节点也可以间隔性地被更新,如每隔一段时间(如每隔一个周期)就可以被更新,更新时,M的数值也可以被更新,即第一共识节点可以将需要共识的区块广播至的共识节点的数量也可以是变化的,换句话说,第一共识节点可以将需要共识的区块广播至的若干个共识节点可以是定期更新且动态变化的。可选的,具体如何确定第一共识节点对应的第一共识子网络也可以根据实际应用场景确定,对此不做限制。
同理,此处第一共识子网络也可以理解为是第一共识节点在广播第一区块时,所形成的需要广播第一区块的一个虚拟的共识子网络,该共识子网络可以不是预先划分出来的一个独立的子网络。
而若在第二共识子网络中对第一区块进行共识时,第一区块在第一共识节点处共识不通过,则第一共识节点就无需继续将第一区块广播至对应的第一共识子网络,只需要记录针对第一区块的共识不通过结果即可。
同理,第一共识节点在所属的第一共识子网络中广播第一区块后,第一共识子网络中各个共识节点可以继续对第一区块进行上述3个阶段的共识处理,进而第一共识子网络中各个共识节点也可以得到各自针对第一区块的共识结果,该共识结果可以是共识通过结果或者共识不通过结果,以此类推,第一共识子网络中获取到针对第一区块的共识通过结果的共识节点可以继续将第一区块广播给对应的共识子网络,使得第一区块在该共识子网络中再继续被执行共识处理。
同理,上述第一主节点是当前整个共识网络的主节点,用于对区块进行提案;而第一共识节点可以理解为是第一共识子网络中的“主节点”,即可以理解为,在第一共识子网络中,是由第一共识节点发起对第一区块的提案共识。
通过上述过程,可以理解的是,第一区块在一个个共识子网络之间不断被扩散性的广播,进而在各个共识子网络中可以分别对第一区块进行完整的共识过程(包括上述3个共识阶段),最终,可以实现第一区块在整个共识网络中的共识。由于3个共识阶段中后面两个共识阶段(prevote阶段和precommit阶段)都存在需要在对区块进行相互共识的共识节点之间进行相互广播的共识数据(如投票数据),若在包含N个共识节点的整个共识网络进行数据的相互广播,则其通信复杂度就是O(N2)。
因此,通过本申请提供的方法,在对区块进行上述3个共识阶段的共识处理时,在后面两个共识阶段共识节点间也只需要在相应的共识子网络中进行共识数据的相互广播,而无需在整个大规模的共识网络内对共识数据进行相互广播,因此减少了共识过程中需要广播传输的数据量,且降低了共识过程中的通信复杂度。
上述按照各个共识子网络不断扩散性地对第一区块进行广播共识的方式可以是基于gossip协议(一种通信协议)的原理实现的,通过将大规模节点的共识化为若干个小规模节点的共识,可以提升整个区块链的共识性能。
请参见图4a-图4b,图4a-图4b是本申请提供的一种区块广播的场景示意图。如图4a所示,此处,共识网络中的共识节点可以包括节点1~节点14,节点1可以是第一主节点,节点1首先可以将需要共识的第一区块广播到对应的共识子网络,此处节点1对应的共识子网络可以包含节点1、节点2、节点3和节点4,进而在节点1对应的共识子网络中各个共识节点可以对第一区块进行共识处理,该共识子网络中对第一区块共识通过的共识节点,就可以继续将第一区块广播到自己对应的共识子网络,进而,在该共识子网络中的各个共识节点可以继续对第一区块进行共识处理。
如图4a所示,若第一区块在节点2处共识通过,则节点2可以继续将第一区块广播到对应的共识子网络中,此处节点2对应的共识子网络可以包含节点2、节点5、节点6和节点7。进而在节点2对应的共识子网络中各个共识节点可以对第一区块继续进行共识处理,该共识子网络中对第一区块共识通过的共识节点,还可以继续将第一区块广播到自己对应的共识子网络,进而,在该共识子网络中的各个共识节点依旧可以继续对第一区块进行共识处理。
如图4b所示,若第一区块在节点6处共识通过,则节点6可以继续将第一区块广播到对应的共识子网络中,此处节点6对应的共识子网络可以包含节点6、节点8、节点9和节点14。以此类推,节点6对应共识子网络中对第一区块共识通过的共识节点,还可以继续将第一区块广播到自己对应的共识子网络,进而,在该共识子网络中的各个共识节点可以继续对第一区块进行共识处理,最终达到第一区块在整个共识网络中进行共识的目的。
其中,共识网络中各个共识节点对于同一个区块可以只向对应共识子网络中广播一次。
再请参见图5,图5是本申请提供的一种区块共识的场景示意图。如图5所示,共识网络中的N个共识节点可以包含节点0~节点30,节点0为第一主节点。
因此,首先节点0可以在对应共识子网络(包括节点0~节点4)中广播需要进行共识的第一区块,进而,在该共识子网络中就可以对第一区块进行共识处理。
若在节点0对应共识子网络中对第一区块共识完成,且节点1~节点4均对第一区块共识通过,则节点1~节点4都可以继续将第一区块广播到各自对应的共识子网络中。
如此处,节点1对应的共识子网络可以包含节点1、节点5、节点6和节点7,因此,节点1可以将第一区块继续广播给节点5、节点6和节点7;节点2对应的共识子网络可以包含节点2、节点8、节点9、节点10,因此,节点2可以将第一区块继续广播给节点8、节点9、节点10;节点3对应的共识子网络可以包含节点3、节点11、节点12、节点13,因此,节点3可以将第一区块继续广播给节点11、节点12、节点13;节点4对应的共识子网络可以包含节点4、节点14、节点15、节点16,因此,节点4可以将第一区块继续广播给节点14、节点15、节点16。
以此类推,各个共识子网络中对第一区块共识通过的共识节点可以继续将第一区块广播到对应共识子网络中进行共识处理,只要后续在共识网络中对第一区块共识通过的共识节点的数量大于或等于数量阈值,即可对第一区块进行上链处理。各个共识子网络中对第一区块共识不通过的共识节点则无需再将第一区块广播给更多的共识节点。
步骤S103,在共识网络中广播第一共识节点针对第一区块的共识通过结果,并获取第一区块在共识网络中的共识通过结果的第一数量,以及根据第一数量对第一区块进行上链处理。
可选的,第一共识节点可以在共识网络中广播自己针对第一区块的共识通过结果,使得共识网络中其他共识节点也可以得知第一共识节点针对第一区块的共识通过结果。而若第一区块在第一共识节点处共识不通过,则第一共识节点无需广播针对第一区块的共识不通过结果。
其中,同理,第一共识节点在共识网络中也可以基于gossip协议的原理先将自己针对第一区块的共识通过结果广播到对应的共识子网络中,再由第一共识节点对应的共识子网络中的共识节点,再继续将第一共识节点针对第一区块的共识通过结果广播至对应的共识子网络,以此类推,不断扩散广播,最终达到将第一共识节点针对第一区块的共识通过结果在整个共识网络中广播的目的。
实际上,共识网络中对第一区块共识通过的各个共识节点,都可以像上述第一共识节点在共识网络中广播针对第一区块的共识通过结果的原理,分别在共识网络中广播自己针对第一区块的共识通过结果。因此,共识网络中各个共识节点都可以获取到其他共识节点对于第一区块的共识通过结果。
因此,第一共识节点还可以获取到第一区块在共识网络中的共识通过结果的数量(可以称为第一数量),该第一数量就是第一共识节点在整个共识网络获取到的各个共识节点针对第一区块的共识通过结果的总数量。
进而,第一共识节点可以根据该第一数量对第一区块进行上链处理:如若该第一数量大于或等于数量阈值,则表明第一区块在整个共识网络中共识通过,第一共识节点就可以对第一区块进行上链处理,即将第一区块添加到区块链网络。而若第一数量小于该数量阈值,则表明第一区块在整个共识网络中共识不通过,第一共识节点就可以丢弃第一区块,即不对第一区块进行上链处理。
其中,上述数量阈值可以是2f+1,f是共识网络中支持的最大作恶节点的数量(即能够接受的作恶的共识节点的最大数量),上述N需要大于或等于3f+1。
可选的,共识网络中任一共识节点针对任一区块的共识通过结果可以是该任一共识节点针对该任一区块的节点签名。第一共识节点可以缓存有第一区块关联的节点签名集合,该节点签名集合用于存储共识网络中各个共识节点针对第一区块的节点签名(即共识通过结果),若第一区块在第一共识节点处共识通过,则该节点签名集合可以包含第一共识节点针对第一区块的节点签名。
因此,在第一区块在共识网络中被执行共识处理的过程(即第一区块在共识网络的各个共识子网络中被执行共识处理的过程)中,第一共识节点可以接收到N个共识节点中除第一共识节点之外的共识节点广播的针对第一区块的节点签名(广播的可以是共识节点自己针对第一区块的节点签名,或者广播的也可以是接收到的其他共识节点针对第一区块的节点签名),第一共识节点可以将接收到的针对第一区块的节点签名,都添加到第一区块关联的节点签名集合中。
进而,第一共识节点可以获取第一区块关联的节点签名集合中的节点签名的数量,该数量即为上述第一数量,进而,若该第一数量大于或等于上述数量阈值,则第一共识节点就可以对第一区块进行上链处理(即落盘,如添加到第一共识节点的本地账本中)。
共识网络中各个共识节点都可以按照上述第一共识节点对第一区块进行上链处理的原理,基于接收到的针对第一区块的共识通过结果对第一区块进行上链处理。
请参见图6,图6是本申请提供的一种区块提案内容的场景示意图。如图6所示,任一共识节点在对应共识子网络中提案的内容(即广播的内容)可以包括Block(区块,如第一区块)、主节点对区块的签名(如第一主节点对第一区块的签名)、节点签名集合、本轮共识节点ID(标识)集合(该集合可以包含当前共识子网络中所有共识节点的节点ID)以及当前节点签名(即当前共识子网络中“主节点”对区块的节点签名)。
其中,提案内容中Block可以携带该区块对应的区块高度以及共识round(即共识轮次),该区块高度以及共识round可以用于唯一标识该区块。提案内容中主节点(如第一主节点,不打引号的主节点表示整个共识网络中的主节点)对区块的签名可以用于对提案内容进行确认,即确认当前区块是由当前主节点所发起共识的。
提案内容中的节点签名集合可以用于记录共识网络中各个共识节点针对第一区块的节点签名,该节点签名即为针对第一区块的共识通过结果,可以理解的是,该共识子网络中的“主节点”(打引号的“主节点”用于表示在对应共识子网络中充当主节点作用的共识节点)最开始向对应共识子网络中广播提案内容时,该节点签名集合中最初可以只包含该“主节点”针对第一区块的节点签名,该节点签名集合后续可以不断更新。
提案内容中的本轮共识节点ID集合可以用于使得当前共识子网络中的各个共识节点清楚知道当前需要和哪些共识节点完成对区块的共识处理。
当前节点签名用于确认当前提案内容是由当前共识子网络中充当“主节点”的共识节点所广播。
更多的,若上述第二共识节点是第一主节点,则上述K个共识节点可以包含第二主节点,该第二主节点是指N个共识节点中用于对第一主节点进行主节点轮换的下一个主节点,即该第二主节点可以是第一主节点之后的下一个用于对区块进行提案的主节点。
因此,第二主节点可以在对第二共识节点广播的第一区块共识完成(如共识通过)后,在共识网络中发起针对第二区块的共识过程,第二主节点发起针对第二区块的共识过程的原理与第一主节点发起针对第一区块的共识过程的原理相同,如都是先广播至对应的共识子网络,进而在共识网络的各个共识子网络之间进行扩散性地广播共识。其中,第二区块对应的区块高度可以是第一区块对应的区块高度的下一个区块高度。
其中,需要说明的是,需要共识的任一个区块对应的区块高度,就是在整个共识网络中对该区块共识通过后,该区块上链后的区块高度。
通过上述,可以知道的是,共识网络中的当前主节点在发起针对区块的提案时,可以优先将该区块广播给下一个主节点(即该当前主节点对应的共识子网络可以包含该当前主节点的下一个主节点),使得该下一个主节点在完成对当前主节点广播的区块的共识后,可以提前发起针对下一个区块(如第二区块)的共识过程,使得下一个区块的共识过程可以与当前区块的共识过程同步进行,以提升对区块的共识处理效率。
本申请中,第一共识节点可以接收第二共识节点在第二共识子网络中广播的第一区块;第二共识子网络包含N个共识节点中的K个共识节点,第一共识节点与第二共识节点均属于第二共识子网络,K为小于N的正整数;第二共识节点是N个共识节点中除第一共识节点外的任一个;第一区块的共识过程是由共识网络中第一主节点发起;在第二共识子网络中对第一区块进行共识处理;若第一区块在第一共识节点处共识通过,则在第一共识节点所属的第一共识子网络中广播第一区块,使第一区块在第一共识子网络中继续被执行共识处理;第一共识子网络包含N个共识节点中的M个共识节点;M为小于N的正整数;在共识网络中广播第一共识节点针对第一区块的共识通过结果,并获取第一区块在共识网络中的共识通过结果的第一数量,以及根据第一数量对第一区块进行上链处理。由此可见,本申请提出的方法各个共识节点都可以将区块在共识网络的小范围内(如第一共识子网络和第二共识子网络)进行广播,进而也在小范围内对区块进行共识处理,这可以减少在对区块进行共识时的通信量,并可以提升共识网络对于区块的共识效率及性能。
请参见图7,图7是本申请提供的一种区块处理方法的流程示意图。如图7所示,该方法包括:
步骤S201,获取待共识的第三区块;第三区块是由第三主节点在超时未获取到第一区块时所发起的需要进行共识的区块,第三区块对应的区块高度是第一区块高度,第三主节点是N个共识节点中在第一主节点之后用于进行主节点轮换的共识节点。
可选的,本申请实施例中的执行主体也可以是上述第一共识节点。上述第一区块对应的区块高度可以是第一区块高度,即第一区块是在第一区块高度提案的区块,若在全网(如整个共识网络)对第一区块共识通过(如第一区块在共识网络的共识通过结果的数量大于或等于上述数量阈值),则第一区块上链后的区块高度就为第一区块高度。
第一共识节点可以获取到待共识的第三区块,该第三区块可以是由第三主节点在超时未获取到第一区块时所发起的需要进行共识的区块,或者说第三区块可以是由第三主节点在超时未获取到(可以是因为传输延时未获取到或者因为网络故障未获取到等)在第一区块高度提案的区块时所生成的需要进行共识的区块,该第三区块对应的区块高度也为第一区块高度,即第一区块对应的区块高度和第三区块对应的区块高度可以相同。
即在同一区块高度,可以发起对区块的一轮或者多轮(round)共识,一轮共识对应一个需要被共识的区块,但是对于同一个区块高度,只有一轮中的区块可以在全网被共识通过,即在同一个区块高度只有一个区块可以在全网被共识通过。上述第一区块和第三区块可以是对应相同区块高度但不同共识round的区块。
该第三主节点可以是上述N个共识节点中在第一主节点之后用于进行主节点轮换的共识节点,如第三主节点可以是第一主节点之后的第1个主节点(如上述第二主节点),或者第三主节点也可以是第一主节点之后的第2个主节点,或者第三主节点也可以是第一主节点之后的第3个主节点,等等。
第一共识节点获取到的第三区块可以是由第三主节点广播过来的,或者第一共识节点获取到的第三区块也可以不是由第三主节点所广播的,而是由其他已经接收到第一共识节点发起的第三区块的共识节点所广播的。其中第三主节点在共识网络中广播和共识第三区块的原理可以与上述第一主节点在共识网络中广播和共识第一区块的原理相同,如都可以是通过在各个共识子网络之间进行扩散性地广播共识。
步骤S202,对第三区块进行共识处理;若完成对第三区块的共识处理,则缓存第三区块。
可选的,第一共识节点可以对获取到的第三区块进行共识处理,若完成对第二区块的共识处理,则可以先缓存第三区块,后续还可以继续在共识网络中获取其他共识节点针对第三区块的共识通过结果。并且,第一共识节点在完成对第三区块的共识处理后,可以得到针对第三区块的共识结果,该共识结果可以是共识通过结果或者共识不通过结果。即第一共识节点在完成对第三区块的共识处理后,不论自己对该第三区块是否共识通过,都会先缓存下第三区块。
需要进行说明的是,通常一个共识节点在一个区块高度只能对一个区块共识通过,即一个共识节点只能对同一区块高度下的若干轮共识的任一轮共识中的区块投赞成票(即共识通过,也就是得到共识通过结果)。另外,通常一个共识节点在对一个区块投了赞成票之后,后续也不能再对该区块投反对票(即共识不通过,也就是得到共识不通过结果)。但是特殊的,当一个共识节点对一个区块投了反对票之后,若获取到该区块在共识网络中的共识通过结果的数量、且该数量大于或等于数量阈值,则表明该区块在整个共识网络共识通过,该共识节点可以将对该区块的反对票改为赞成票。
同理,第一共识节点在完成对第一区块的共识处理后,不论是获取到针对第一区块的共识通过结果,还是获取到针对第一区块的共识不通过结果,第一共识节点也可以缓存下第一区块,以在后续可以继续在共识网络中获取其他共识节点针对第一区块的共识通过结果。
因此,第一共识节点也可以获取第三区块在共识网络中的共识通过结果的数量(可以称之为是第二数量),若该第二数量大于或等于上述数量阈值,则表明第三区块在整个共识网络共识通过,因此,第一共识节点可以对第三区块进行上链处理,并可以删除第一区块。在同一区块高度,也只能存在一个区块被共识通过,即在同一区块高度的多轮共识中,只能存在一轮的区块在共识网络中的共识通过数量大于或等于数量阈值。
因此,若第三区块在共识网络中的共识通过结果的第二数量大于或等于数量阈值,则第一区块在共识网络中的共识通过结果的第一数量势必不会大于或等于数量阈值,即第三区块在整个共识网络中共识成功(即共识通过)之后,第一区块在整个共识网络中就不会被共识成功。
同理,若上述第一数量大于或等于数量阈值,则第二数量就不会大于或等于数量阈值,此时第一区块在整个共识网络共识通过,第一共识节点可以对第一区块进行上链处理,并可以删除缓存的第三区块。
更多的,本申请中由于同一区块高度可能会存在多个区块进行提案共识,即第一共识节点在同一区块高度可能缓存了多个区块,该多个区块对应的区块高度相同,因此,下面描述当获取到下一个区块高度的区块时,如何从缓存的多个区块中确定该下一个区块高度的区块的父区块的过程:
本申请中,可以为缓存的各个区块添加区块权重,后续通过该区块权重来选取各个区块的父区块,该区块权重越大,表明对应的区块在当前区块高度越可信,该区块权重越小,表明对应的区块在当前区块高度越不可信,下述以第一区块和第三区块为例进行说明,若在同一区块高度存在更多区块,则两两区块之间的处理逻辑类似,如下述内容描述。
第一共识节点可以根据缓存的第一区块的子区块的数量,来得到第一区块的区块权重,第一区块的区块权重就可以等于第一共识节点所缓存的第一区块的子区块的数量。
同理,第一共识节点还可以根据缓存的第三区块的子区块的数量,来得到第三区块的区块权重,第三区块的区块权重就可以等于第一共识节点所缓存的第三区块的子区块的数量。
其中,任一区块的子区块可以包括以该区块为父区块的区块a、以区块a为父区块的区块b、以区块b为父区块的区块c、以区块c为父区块的区块d、……。换句话说,任一区块的子区块可以包含不断往上(即往前)追溯父区块并能追溯到该任一区块的全部区块。
任一区块的同级区块则是指对应区块高度与该任一区块对应的区块高度相同的全部区块,由于第一区块和第三区块都对应于第一区块高度,因此,第一区块和第三区块可以互为同级区块。
由上可知,若某个区块的区块权重越大,则表明后续更多区块是以该个区块为依据进行共识的,反之,若某个区块的区块权重越小,则表明后续更少区块是以该区块为依据来进行共识的,因此区块权重越大,则表明对应区块在当前区块高度更可信。
进而,第一节点可以获取到待共识的第四区块,该第四区块对应的区块高度可以称之为是第二区块高度,第二区块高度可以是第一区块高度的下一个区块高度。如第一区块高度是99,则第二区块高度可以是100。可选的,该第四区块可以是上述第二区块,或者也可以是第二区块的同级区块。
因此,若缓存的第一区块高度对应的区块只包含第一区块和第三区块,且第一区块的区块权重大于第三区块的区块权重,则第一共识节点可以将第一区块作为第四区块的父区块,并对第四区块进行共识处理。
而若缓存的第一区块高度对应的区块只包含第一区块和第三区块,且第一区块的区块权重小于第三区块的区块权重,则第一共识节点可以将第三区块作为第四区块的父区块,并对第四区块进行共识处理。
若缓存的第一区块高度对应的区块只包含第一区块和第三区块,且第一区块的区块权重等于第三区块的区块权重,则第一共识节点可以在第一区块和第三区块中任意选择一个区块作为第四区块的父区块,并对第四区块进行共识处理。
同样,若第一共识节点完成对第四区块的共识处理,得到针对该第四区块的共识结果(可以是共识通过结果或者共识不通过结果),则第一共识节点也可以缓存第四区块。
第一共识节点同样可以获取第四区块在共识网络中的共识通过结果的数量。可以理解的是,若一个区块在共识网络中共识通过,则该区块往上能追溯到的所有父区块都会被共识通过,因此,若第四区块在共识网络中的共识通过结果的数量大于或等于数量阈值,且第四区块的父区块是第一区块,则表明第四区块和第一区块在整个共识网络中会被共识通过,第一共识节点可以删除缓存的第三区块以及第四区块的同级区块,并可以对缓存的第一区块以及第四区块进行上链处理。
若因为网络延迟,第一共识节点在共识网络获取到第四区块的数量大于或等于数量阈值的共识通过结果,但还未在共识网络获取到第一区块的数量大于或等于数量阈值的共识通过结果,则第一共识节点可以等待在共识网络获取到第一区块的数量大于或等于数量阈值的共识通过结果之后,再对第一区块和第四区块进行上链处理。
同理,若第四区块在共识网络中的共识通过结果的数量大于或等于数量阈值,且第四区块的父区块是第三区块,则表明第四区块和第三区块在整个共识网络中会被共识通过,第一共识节点可以删除缓存的第一区块以及第四区块的同级区块,并可以对缓存的第三区块以及第四区块进行上链处理。
换句话说,若缓存的某个区块在整个共识网络中被共识通过,则可以对该区块以及通过该区块往前(即往上,如对应区块高度小于该区块对应区块高度的区块)能追溯到的所有父区块进行上链处理,并可以删除该区块的同级区块以及删除通过该区块往前能追溯到的所有父区块的同级区块。
更多的,在确定了第四区块的父区块,完成了对第四区块的共识处理,并缓存了第四区块后,第一共识节点还可以根据缓存的第四区块以及第四区块的父区块,更新第一区块的区块权重、第三区块的区块权重以及第四区块的区块权重。
如若第四区块的父区块是第一区块,则更新第一区块的区块权重可以是指对第一区块已有的区块权重加1,若第四区块的父区块是第三区块,则更新第三区块的区块权重可以是指对第三区块已有的区块权重加1,而为最新缓存的第四区块添加的区块权重可以等于0。
请参见图8,图8是本申请提供的一种设置区块权重的场景示意图。如图8所示,第一共识节点可以缓存有区块1、区块2、区块22、区块3、区块33、区块4、区块44和区块444。
其中,区块2和区块22属于同级区块,区块2对应的区块高度和区块22对应的区块高度相同,区块2和区块22是在相同区块高度的不同round进行提案共识的区块,区块2和区块22可以是由不同共识节点发起共识的。
同理,区块3和区块33属于同级区块,区块3对应的区块高度和区块33对应的区块高度相同,区块3和区块33是在相同区块高度的不同round进行提案共识的区块,区块3和区块33可以是由不同共识节点发起共识的。
更多的,区块4、区块44和区块444属于同级区块,区块4对应的区块高度、区块44对应的区块高度和区块444对应的区块高度相同,区块4、区块44和区块444可以是在相同区块高度的不同round进行提案共识的区块,区块4、区块44和区块444可以是由不同共识节点发起共识的。
任一个区块箭头指向的另一个区块即为该任一个区块的父区块,此处,区块2和区块22的父区块都为区块1,区块3的父区块是区块2,区块33的父区块是区块22,区块4、区块44和区块444的父区块都为区块3。
此处,可以将区块权重记为β。区块1的子区块可以包括区块2、区块22、区块3、区块33、区块4、区块44和区块444共7个子区块,因此,区块1的区块权重为7;区块2的子区块可以包括区块3、区块4、区块44和区块444共4个子区块,因此,区块2的区块权重是4;区块22的子区块包括区块33这一个子区块,因此,区块22的区块权重是1;区块3的子区块包括区块4、区块44和区块444共3个子区块,因此,区块3的区块权重是3;区块33后面没有连接子区块,因此,区块33的区块权重是0,同理,区块4、区块44和区块444后面都没有连接子区块,因此,区块4、区块44和区块444的区块权重都为0。
若此时需要增加一个区块高度与区块3和区块33对应的区块高度相同的区块x,则该区块x就可以以区块2为父区块,因为此时区块2的区块权重4大于区块22的区块权重1。
再请参见图9,图9是本申请提供的一种区块处理的场景示意图。如图9所示,此处,第一共识节点当前可以缓存有区块1、区块2、区块22、区块3、区块33、区块4、区块44、区块444、区块5、区块55和区块555。其中,区块2和区块22可以互为同级区块,区块3和区块33可以互为同级区块,区块4、区块44和区块444可以互为同级区块,区块5、区块55和区块555可以互为同级区块。
若第一共识节点在共识网络中获取到的针对区块444的共识通过结果的数量大于或等于数量阈值(即2f+1),则表明区块444在整个共识网络中共识通过,进而可以确认通过区块444往前能够追溯到的所有父区块(包括区块3、区块2和区块1)都会在共识网络中共识通过,因此,第一共识节点可以删除往前能追溯到的所有父区块的同级区块(包括区块22和区块33),并删除区块444的同级区块(包括区块4和区块44),以及删除区块444的同级区块的子区块(包括区块5和区块55)。当前由于还不确定区块555在共识网络中最终的共识结果,因此,可以保留缓存的区块555,即继续缓存区块555。
本申请中,可以为缓存的各个区块添加对应的区块权重,后续通过为缓存的各个区块添加的区块权重可以准确地定位新缓存的区块的父区块,提升全网对于区块的共识准确性。
请参见图10,图10是本申请提供的一种区块共识的流程示意图。如图10所示,该过程可以由任一个共识节点执行。1.进入一个新的区块高度(如区块高度H,H为正整数),共识轮次(即round)为0(round可以从0开始计数或者也可以从1开始计数)。
2.共识节点判断自己当前是否是主节点,若不是则执行步骤3,若是则执行步骤4。
3.共识节点可以添加定时器,等待接收提案消息(该提案消息中需要共识的区块可以是当前主节点发起的)。
4.共识节点可以生成当前需要共识的区块。
5.共识节点可以随机选择周围节点,作为本轮共识节点集合,该共识节点集合即包含该共识节点对应的共识子网络中的共识节点,并生成提案(包含生成的区块)。
6.共识节点可以将生成的提案广播至所选择的周围节点。
7.共识节点可以与周围节点一起完成对当前提案的区块的共识。
8.共识节点可以判断自己是否对当前共识的区块共识通过。若共识不通过则执行步骤9,若共识通过则执行步骤10。
9.共识节点可以进入当前区块高度的新的共识round,进而重新开始执行步骤2。
10.共识节点可以缓存当前区块,并更新内存中该区块的父辈区块(包含往前能追溯到的所有父区块)的权重值(即区块权重)。
11.共识节点可以启动定时器,并通过附加协议(用于执行附加流程的协议,该附加流程即为全网广播自己针对区块的认可)广播自己对该区块的认可,即广播自己针对区块的共识通过结果。
12.共识节点可以判断缓存中是否有对该区块的其他节点签名,即判断是否获取到共识网络中其他共识节点针对该区块的节点签名(即共识通过结果),若有,则执行步骤13,若没有,表明当前区块在全网共识失败,则重新执行步骤1。
13.共识节点可以将获取到的针对区块的节点签名都添加到区块扩展数据中,该区块扩展数据就可以包括该区块关联的节点签名集合,将针对区块的节点签名都添加到区块扩展数据也就是将针对区块的节点签名都添加到该区块关联的节点签名集合中。
14.共识节点可以判断区块扩展数据中该区块的节点签名的数量是否大于或等于2f+1,若是,则执行步骤15,若不是,表明当前区块在全网共识失败,则重新执行步骤1。
步骤15.共识节点可以将该区块进行落盘,即将区块写入到本地账本,也就是对该区块进行上链处理。
再请参见图11,图11是本申请提供的一种附加方法的流程示意图。如图11所示,该流程可以由任一个共识节点执行。1.共识节点可以通过附加协议接收到其他共识节点广播的投票消息,该投票消息是其他共识节点对当前区块(如第一区块)的共识通过结果进行序列化所得到的。因此,共识节点可以对该投票消息进行反序列化,得到附加消息对象,该附加消息对象包括其他共识节点针对当前区块的节点签名(即共识通过结果),该附加消息对象可以携带对应共识节点的节点ID,表明该附加消息对象是由该节点ID所属的共识节点对当前区块进行共识通过后得到。
2.共识节点可以判断当前获取到的附加消息对象是否接收过,若是则执行步骤3,若不是则执行步骤4。
3.共识节点可以将当前获取到的附加消息对象进行丢弃。
4.共识节点可以验证当前获取到的附加消息对象的合法性,如验证是否是由对应共识节点通过私钥对当前区块进行签名得到(可以通过对应共识节点的公钥进行验证),若验证不合法,则执行步骤3,若验证合法,则执行步骤5。
5.共识节点可以判断该附加消息对象对应的区块是否已经落盘判(如是否已经上链),若是则执行步骤3,若不是则执行步骤6。
6.共识节点还可以判断该附加消息对象对应的区块自己是否处理过(如是否共识完成后缓存过),若未处理过,则执行步骤7,若处理过,则执行步骤8。
7.共识节点可以先缓存下该附加消息对象,等待后续对该附加消息对象对应的区块进行共识完成后再使用。
8.共识节点可以将该附加消息对象中的节点签名加入到对应区块的区块扩展数据中(即加入到对应区块关联的节点签名集合中)。
9.共识节点可以判断区块扩展数据中该区块的节点签名的数量是否大于或等于2f+1,若是,则执行步骤10,若不是,表明当前区块在全网共识失败,结束对当前区块的处理。
步骤10.共识节点可以将该区块进行落盘,即将区块写入到本地账本,也就是对该区块进行上链处理。
请参见图12,图12是本申请提供的一种共识网络的数据处理装置的结构示意图。该共识网络的数据处理装置可以是运行于计算机设备中的一个计算机程序(包括程序代码),例如该共识网络的数据处理装置为一个应用软件,该共识网络的数据处理装置可以用于执行本申请实施例提供的方法中的相应步骤。共识网络包含N个共识节点,N为正整数,N个共识节点包括第一主节点;该装置应用于第一共识节点,第一共识节点是N个共识节点中除第一主节点之外的任一个,如图12所示,该共识网络的数据处理装置1可以包括:接收模块11、共识模块12和获取模块13。
接收模块11,用于接收第二共识节点在第二共识子网络中广播的第一区块;第二共识子网络包含N个共识节点中的K个共识节点,第一共识节点与第二共识节点均属于第二共识子网络,K为小于N的正整数;第二共识节点是N个共识节点中除第一共识节点之外的任一个;第一区块的共识过程是由第一主节点发起;
共识模块12,用于在第二共识子网络中对第一区块进行共识处理;若第一区块在第一共识节点处共识通过,则在第一共识节点所属的第一共识子网络中广播第一区块,使第一区块在第一共识子网络中继续被执行共识处理;第一共识子网络包含N个共识节点中的M个共识节点;M为小于N的正整数;
获取模块13,用于在共识网络中广播第一共识节点针对第一区块的共识通过结果,并获取第一区块在共识网络中的共识通过结果的第一数量,以及根据第一数量对第一区块进行上链处理。
可选的,K个共识节点中除第二共识节点之外的共识节点,是由第二共识节点在N个共识节点中选取的K-1个与第二共识节点相联通的共识节点;M个共识节点中除第一共识节点之外的共识节点,是由第一共识节点在N个共识节点中选取的M-1个与第一共识节点相联通的共识节点;
若第二共识节点是第一主节点,则第二共识节点广播的第一区块是由第二共识节点生成;若第二共识节点不是第一主节点,则第二共识节点广播的第一区块,是由N个共识节点中除第一共识节点和第二共识节点之外的任一共识节点向第二共识节点广播得到。
可选的,共识网络中任一共识节点针对任一区块的共识通过结果是指任一共识节点针对任一区块的节点签名,第一区块具有关联的节点签名集合,节点签名集合包含第一共识节点针对第一区块的节点签名;
获取模块13获取第一区块在共识网络中的共识通过结果的第一数量,以及根据第一数量对第一区块进行上链处理的方式,包括:
在第一区块在共识网络中被执行共识处理的过程中,接收N个共识节点中除第一共识节点之外的共识节点广播的针对第一区块的节点签名,并将接收到的节点签名添加到节点签名集合;
获取节点签名集合中的节点签名的第一数量,若第一数量大于或等于数量阈值,则对第一区块进行上链处理。
可选的,若第二共识节点是第一主节点,则K个共识节点包含第二主节点,第二主节点是指N个共识节点中用于对第一主节点进行主节点轮换的下一个主节点;
第二主节点用于在对第二共识节点广播的第一区块共识通过后,在共识网络中发起针对第二区块的共识过程,第二区块对应的区块高度是第一区块对应的区块高度的下一个区块高度。
可选的,第一区块对应的区块高度是第一区块高度;上述装置1还用于:
获取待共识的第三区块;第三区块是由第三主节点在超时未获取到第一区块时所发起的需要进行共识的区块,第三区块对应的区块高度是第一区块高度,第三主节点是N个共识节点中在第一主节点之后用于进行主节点轮换的共识节点;
对第三区块进行共识处理;若完成对第三区块的共识处理,则缓存第三区块。
可选的,上述装置1还用于:
若完成对第一区块的共识处理,则缓存第一区块;
上述装置1还用于:
若获取到第三区块在共识网络中的共识通过结果的第二数量,且第二数量大于或等于数量阈值,则对第三区块进行上链处理,并删除缓存的第一区块。
可选的,获取模块13根据第一数量对第一区块进行上链处理的方式,包括:
若第一数量大于或等于数量阈值,则对第一区块进行上链处理,并删除缓存的第三区块。
可选的,上述装置1还用于:
根据缓存的第一区块的子区块的数量确定第一区块的区块权重;
根据缓存的第三区块的子区块的数量确定第三区块的区块权重;
其中,任一区块的同级区块是指对应的区块高度与任一区块对应的区块高度相同的区块,第一区块与第三区块互为同级区块;
第一区块的区块权重和第三区块的区块权重用于确定第四区块的父区块,第四区块对应的区块高度是第二区块高度,第二区块高度是第一区块高度的下一个区块高度。
可选的,上述装置1还用于:
获取待共识的第四区块;
若第一区块的区块权重大于第三区块的区块权重,则将第一区块作为第四区块的父区块,并对第四区块进行共识处理;
若第一区块的区块权重小于第三区块的区块权重,则将第三区块作为第四区块的父区块,并对第四区块进行共识处理。
可选的,若第四区块在共识网络中的共识通过结果的数量大于或等于数量阈值,且第四区块的父区块是第一区块,则第一共识节点用于删除缓存的第三区块及第四区块的同级区块,并用于对第一区块及第四区块进行上链处理;
若第四区块在共识网络中的共识通过结果的数量大于或等于数量阈值,且第四区块的父区块是第三区块,则第一共识节点用于删除缓存的第一区块及第四区块的同级区块,并用于对第三区块及第四区块进行上链处理;
其中,任一区块的同级区块是指对应的区块高度与任一区块对应的区块高度相同的区块,第一区块与第三区块互为同级区块。
可选的,上述装置1还用于:
若完成对第四区块的共识处理,则缓存第四区块;
基于缓存的第四区块及第四区块的父区块,更新第一区块的区块权重、第三区块的区块权重及第四区块的区块权重。
根据本申请的一个实施例,图3所示的共识网络的数据处理方法所涉及的步骤可由图12所示的共识网络的数据处理装置1中的各个模块来执行。例如,图3中所示的步骤S101可由图12中的接收模块11来执行,图3中所示的步骤S102可由图12中的共识模块12来执行;图3中所示的步骤S103可由图12中的获取模块13来执行。
本申请中,第一共识节点可以接收第二共识节点在第二共识子网络中广播的第一区块;第二共识子网络包含N个共识节点中的K个共识节点,第一共识节点与第二共识节点均属于第二共识子网络,K为小于N的正整数;第二共识节点是N个共识节点中除第一共识节点外的任一个;第一区块的共识过程是由共识网络中第一主节点发起;在第二共识子网络中对第一区块进行共识处理;若第一区块在第一共识节点处共识通过,则在第一共识节点所属的第一共识子网络中广播第一区块,使第一区块在第一共识子网络中继续被执行共识处理;第一共识子网络包含N个共识节点中的M个共识节点;M为小于N的正整数;在共识网络中广播第一共识节点针对第一区块的共识通过结果,并获取第一区块在共识网络中的共识通过结果的第一数量,以及根据第一数量对第一区块进行上链处理。由此可见,本申请提出的装置各个共识节点都可以将区块在共识网络的小范围内(如第一共识子网络和第二共识子网络)进行广播,进而也在小范围内对区块进行共识处理,这可以减少在对区块进行共识时的通信量,并可以提升共识网络对于区块的共识效率及性能。
根据本申请的一个实施例,图12所示的共识网络的数据处理装置1中的各个模块可以分别或全部合并为一个或若干个单元来构成,或者其中的某个(些)单元还可以再拆分为功能上更小的多个子单元,可以实现同样的操作,而不影响本申请的实施例的技术效果的实现。上述模块是基于逻辑功能划分的,在实际应用中,一个模块的功能也可以由多个单元来实现,或者多个模块的功能由一个单元实现。在本申请的其它实施例中,共识网络的数据处理装置1也可以包括其它单元,在实际应用中,这些功能也可以由其它单元协助实现,并且可以由多个单元协作实现。
根据本申请的一个实施例,可以通过在包括中央处理单元(CPU)、随机存取存储介质(RAM)、只读存储介质(ROM)等处理元件和存储元件的例如计算机的通用计算机设备上运行能够执行如图3中所示的相应方法所涉及的各步骤的计算机程序(包括程序代码),来构造如图12中所示的共识网络的数据处理装置1,以及来实现本申请实施例的共识网络的数据处理方法。上述计算机程序可以记载于例如计算机可读记录介质上,并通过计算机可读记录介质装载于上述计算设备中,并在其中运行。
请参见图13,图13是本申请提供的一种计算机设备的结构示意图。如图13所示,计算机设备1000可以包括:处理器1001,网络接口1004和存储器1005,此外,计算机设备1000还可以包括:用户接口1003,和至少一个通信总线1002。其中,通信总线1002用于实现这些组件之间的连接通信。其中,用户接口1003可以包括显示屏(Display)、键盘(Keyboard),可选用户接口1003还可以包括标准的有线接口、无线接口。网络接口1004可选的可以包括标准的有线接口、无线接口(如WI-FI接口)。存储器1005可以是高速RAM存储器,也可以是非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器。存储器1005可选的还可以是至少一个位于远离前述处理器1001的存储装置。如图13所示,作为一种计算机存储介质的存储器1005中可以包括操作系统、网络通信模块、用户接口模块以及设备控制应用程序。
在图13所示的计算机设备1000中,网络接口1004可提供网络通讯功能;而用户接口1003主要用于为用户提供输入的接口;而处理器1001可以用于调用存储器1005中存储的设备控制应用程序,以实现:
接收第二共识节点在第二共识子网络中广播的第一区块;第二共识子网络包含N个共识节点中的K个共识节点,第一共识节点与第二共识节点均属于第二共识子网络,K为小于N的正整数;第二共识节点是N个共识节点中除第一共识节点之外的任一个;第一区块的共识过程是由共识网络中的第一主节点发起;
在第二共识子网络中对第一区块进行共识处理;若第一区块在第一共识节点处共识通过,则在第一共识节点所属的第一共识子网络中广播第一区块,使第一区块在第一共识子网络中继续被执行共识处理;第一共识子网络包含N个共识节点中的M个共识节点;M为小于N的正整数;
在共识网络中广播第一共识节点针对第一区块的共识通过结果,并获取第一区块在共识网络中的共识通过结果的第一数量,以及根据第一数量对第一区块进行上链处理。
可选的,K个共识节点中除第二共识节点之外的共识节点,是由第二共识节点在N个共识节点中选取的K-1个与第二共识节点相联通的共识节点;M个共识节点中除第一共识节点之外的共识节点,是由第一共识节点在N个共识节点中选取的M-1个与第一共识节点相联通的共识节点;
若第二共识节点是第一主节点,则第二共识节点广播的第一区块是由第二共识节点生成;若第二共识节点不是第一主节点,则第二共识节点广播的第一区块,是由N个共识节点中除第一共识节点和第二共识节点之外的任一共识节点向第二共识节点广播得到。
可选的,共识网络中任一共识节点针对任一区块的共识通过结果是指任一共识节点针对任一区块的节点签名,第一区块具有关联的节点签名集合,节点签名集合包含第一共识节点针对第一区块的节点签名;
处理器1001还可以用于调用存储器1005中存储的设备控制应用程序,以实现:
在第一区块在共识网络中被执行共识处理的过程中,接收N个共识节点中除第一共识节点之外的共识节点广播的针对第一区块的节点签名,并将接收到的节点签名添加到节点签名集合;
获取节点签名集合中的节点签名的第一数量,若第一数量大于或等于数量阈值,则对第一区块进行上链处理。
可选的,若第二共识节点是第一主节点,则K个共识节点包含第二主节点,第二主节点是指N个共识节点中用于对第一主节点进行主节点轮换的下一个主节点;
第二主节点用于在对第二共识节点广播的第一区块共识通过后,在共识网络中发起针对第二区块的共识过程,第二区块对应的区块高度是第一区块对应的区块高度的下一个区块高度。
可选的,第一区块对应的区块高度是第一区块高度;处理器1001还可以用于调用存储器1005中存储的设备控制应用程序,以实现:
获取待共识的第三区块;第三区块是由第三主节点在超时未获取到第一区块时所发起的需要进行共识的区块,第三区块对应的区块高度是第一区块高度,第三主节点是N个共识节点中在第一主节点之后用于进行主节点轮换的共识节点;
对第三区块进行共识处理;若完成对第三区块的共识处理,则缓存第三区块。
可选的,处理器1001还可以用于调用存储器1005中存储的设备控制应用程序,以实现:
若完成对第一区块的共识处理,则缓存第一区块;
处理器1001还可以用于调用存储器1005中存储的设备控制应用程序,以实现:
若获取到第三区块在共识网络中的共识通过结果的第二数量,且第二数量大于或等于数量阈值,则对第三区块进行上链处理,并删除缓存的第一区块。
可选的,处理器1001还可以用于调用存储器1005中存储的设备控制应用程序,以实现:
若第一数量大于或等于数量阈值,则对第一区块进行上链处理,并删除缓存的第三区块。
可选的,处理器1001还可以用于调用存储器1005中存储的设备控制应用程序,以实现:
根据缓存的第一区块的子区块的数量确定第一区块的区块权重;
根据缓存的第三区块的子区块的数量确定第三区块的区块权重;
其中,第一区块的区块权重和第三区块的区块权重用于确定第四区块的父区块,第四区块对应的区块高度是第二区块高度,第二区块高度是第一区块高度的下一个区块高度。
可选的,处理器1001还可以用于调用存储器1005中存储的设备控制应用程序,以实现:
获取待共识的第四区块;
若第一区块的区块权重大于第三区块的区块权重,则将第一区块作为第四区块的父区块,并对第四区块进行共识处理;
若第一区块的区块权重小于第三区块的区块权重,则将第三区块作为第四区块的父区块,并对第四区块进行共识处理。
可选的,若第四区块在共识网络中的共识通过结果的数量大于或等于数量阈值,且第四区块的父区块是第一区块,则第一共识节点用于删除缓存的第三区块及第四区块的同级区块,并用于对第一区块及第四区块进行上链处理;
若第四区块在共识网络中的共识通过结果的数量大于或等于数量阈值,且第四区块的父区块是第三区块,则第一共识节点用于删除缓存的第一区块及第四区块的同级区块,并用于对第三区块及第四区块进行上链处理;
其中,任一区块的同级区块是指对应的区块高度与任一区块对应的区块高度相同的区块,第一区块与第三区块互为同级区块。
可选的,处理器1001还可以用于调用存储器1005中存储的设备控制应用程序,以实现:
若完成对第四区块的共识处理,则缓存第四区块;
基于缓存的第四区块及第四区块的父区块,更新第一区块的区块权重、第三区块的区块权重及第四区块的区块权重。
应当理解,本申请实施例中所描述的计算机设备1000可执行前文图3对应实施例中对上述共识网络的数据处理方法的描述,也可执行前文图12所对应实施例中对上述共识网络的数据处理装置1的描述,在此不再赘述。另外,对采用相同方法的有益效果描述,也不再进行赘述。
此外,这里需要指出的是:本申请还提供了一种计算机可读存储介质,且计算机可读存储介质中存储有前文提及的共识网络的数据处理装置1所执行的计算机程序,且计算机程序包括程序指令,当处理器执行程序指令时,能够执行前文图3所对应实施例中对共识网络的数据处理方法的描述,因此,这里将不再进行赘述。另外,对采用相同方法的有益效果描述,也不再进行赘述。对于本申请所涉及的计算机存储介质实施例中未披露的技术细节,请参照本申请方法实施例的描述。
作为示例,上述程序指令可被部署在一个计算机设备上执行,或者被部署位于一个地点的多个计算机设备上执行,又或者,在分布在多个地点且通过通信网络互连的多个计算机设备上执行,分布在多个地点且通过通信网络互连的多个计算机设备可以组成区块链网络。
上述计算机可读存储介质可以是前述任一实施例提供的共识网络的数据处理装置或者上述计算机设备的内部存储单元,例如计算机设备的硬盘或内存。该计算机可读存储介质也可以是该计算机设备的外部存储设备,例如该计算机设备上配备的插接式硬盘,智能存储卡(smart media card,SMC),安全数字(secure digital,SD)卡,闪存卡(flashcard)等。进一步地,该计算机可读存储介质还可以既包括该计算机设备的内部存储单元也包括外部存储设备。该计算机可读存储介质用于存储该计算机程序以及该计算机设备所需的其他程序和数据。该计算机可读存储介质还可以用于暂时地存储已经输出或者将要输出的数据。
本申请提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行前文图3对应实施例中对上述共识网络的数据处理方法的描述,因此,这里将不再进行赘述。另外,对采用相同方法的有益效果描述,也不再进行赘述。对于本申请所涉及的计算机可读存储介质实施例中未披露的技术细节,请参照本申请方法实施例的描述。
本申请实施例的说明书和权利要求书及附图中的术语“第一”、“第二”等是用于区别不同对象,而非用于描述特定顺序。此外,术语“包括”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、装置、产品或设备没有限定于已列出的步骤或模块,而是可选地还包括没有列出的步骤或模块,或可选地还包括对于这些过程、方法、装置、产品或设备固有的其他步骤单元。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
本申请实施例提供的方法及相关装置是参照本申请实施例提供的方法流程图和/或结构示意图来描述的,具体可由计算机程序指令实现方法流程图和/或结构示意图的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。这些计算机程序指令可提供到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或结构示意图一个方框或多个方框中指定的功能的装置。这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或结构示意图一个方框或多个方框中指定的功能。这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或结构示意一个方框或多个方框中指定的功能的步骤。
以上所揭露的仅为本申请较佳实施例而已,当然不能以此来限定本申请之权利范围,因此依本申请权利要求所作的等同变化,仍属本申请所涵盖的范围。
Claims (15)
1.一种共识网络的数据处理方法,其特征在于,所述共识网络包含N个共识节点,N为正整数,所述N个共识节点包括第一主节点;所述方法由第一共识节点执行,所述第一共识节点是所述N个共识节点中除所述第一主节点之外的任一个;所述方法包括:
接收第二共识节点在第二共识子网络中广播的第一区块;所述第二共识子网络包含所述N个共识节点中的K个共识节点,所述第一共识节点与所述第二共识节点均属于所述第二共识子网络,K为小于N的正整数;所述第二共识节点是所述N个共识节点中除所述第一共识节点之外的任一个;所述第一区块的共识过程是由所述第一主节点发起;
在所述第二共识子网络中对所述第一区块进行共识处理;若所述第一区块在所述第一共识节点处共识通过,则在所述第一共识节点所属的第一共识子网络中广播所述第一区块,使所述第一区块在所述第一共识子网络中继续被执行共识处理;所述第一共识子网络包含所述N个共识节点中的M个共识节点;M为小于N的正整数;
在所述共识网络中广播所述第一共识节点针对所述第一区块的共识通过结果,并获取所述第一区块在所述共识网络中的共识通过结果的第一数量,以及根据所述第一数量对所述第一区块进行上链处理。
2.根据权利要求1所述的方法,其特征在于,所述K个共识节点中除所述第二共识节点之外的共识节点,是由所述第二共识节点在所述N个共识节点中选取的K-1个与所述第二共识节点相联通的共识节点;所述M个共识节点中除所述第一共识节点之外的共识节点,是由所述第一共识节点在所述N个共识节点中选取的M-1个与所述第一共识节点相联通的共识节点;
若所述第二共识节点是所述第一主节点,则所述第二共识节点广播的所述第一区块是由所述第二共识节点生成;若所述第二共识节点不是所述第一主节点,则所述第二共识节点广播的所述第一区块,是由所述N个共识节点中除所述第一共识节点和所述第二共识节点之外的任一共识节点向所述第二共识节点广播得到。
3.根据权利要求1所述的方法,其特征在于,所述共识网络中任一共识节点针对任一区块的共识通过结果是指所述任一共识节点针对所述任一区块的节点签名,所述第一区块具有关联的节点签名集合,所述节点签名集合包含所述第一共识节点针对所述第一区块的节点签名;
所述获取所述第一区块在所述共识网络中的共识通过结果的第一数量,以及根据所述第一数量对所述第一区块进行上链处理,包括:
在所述第一区块在所述共识网络中被执行共识处理的过程中,接收所述N个共识节点中除所述第一共识节点之外的共识节点广播的针对所述第一区块的节点签名,并将接收到的节点签名添加到所述节点签名集合;
获取所述节点签名集合中的节点签名的所述第一数量,若所述第一数量大于或等于数量阈值,则对所述第一区块进行上链处理。
4.根据权利要求1所述的方法,其特征在于,若所述第二共识节点是所述第一主节点,则所述K个共识节点包含第二主节点,所述第二主节点是指所述N个共识节点中用于对所述第一主节点进行主节点轮换的下一个主节点;
所述第二主节点用于在对所述第二共识节点广播的所述第一区块共识通过后,在所述共识网络中发起针对第二区块的共识过程,所述第二区块对应的区块高度是所述第一区块对应的区块高度的下一个区块高度。
5.根据权利要求1所述的方法,其特征在于,所述第一区块对应的区块高度是第一区块高度;所述方法还包括:
获取待共识的第三区块;所述第三区块是由第三主节点在超时未获取到所述第一区块时所发起的需要进行共识的区块,所述第三区块对应的区块高度是所述第一区块高度,所述第三主节点是所述N个共识节点中在所述第一主节点之后用于进行主节点轮换的共识节点;
对所述第三区块进行共识处理;若完成对所述第三区块的共识处理,则缓存所述第三区块。
6.根据权利要求5所述的方法,其特征在于,所述方法还包括:
若完成对所述第一区块的共识处理,则缓存所述第一区块;
所述方法还包括:
若获取到所述第三区块在所述共识网络中的共识通过结果的第二数量,且所述第二数量大于或等于数量阈值,则对所述第三区块进行上链处理,并删除缓存的所述第一区块。
7.根据权利要求6所述的方法,其特征在于,所述根据所述第一数量对所述第一区块进行上链处理,包括:
若所述第一数量大于或等于所述数量阈值,则对所述第一区块进行上链处理,并删除缓存的所述第三区块。
8.根据权利要求5所述的方法,其特征在于,所述方法还包括:
根据缓存的所述第一区块的子区块的数量确定所述第一区块的区块权重;
根据缓存的所述第三区块的子区块的数量确定所述第三区块的区块权重;
其中,所述第一区块的区块权重和所述第三区块的区块权重用于确定第四区块的父区块,所述第四区块对应的区块高度是第二区块高度,所述第二区块高度是所述第一区块高度的下一个区块高度。
9.根据权利要求8所述的方法,其特征在于,所述方法还包括:
获取待共识的所述第四区块;
若所述第一区块的区块权重大于所述第三区块的区块权重,则将所述第一区块作为所述第四区块的父区块,并对所述第四区块进行共识处理;
若所述第一区块的区块权重小于所述第三区块的区块权重,则将所述第三区块作为所述第四区块的父区块,并对所述第四区块进行共识处理。
10.根据权利要求9所述的方法,其特征在于,若所述第四区块在所述共识网络中的共识通过结果的数量大于或等于数量阈值,且所述第四区块的父区块是所述第一区块,则所述第一共识节点用于删除缓存的所述第三区块及所述第四区块的同级区块,并用于对所述第一区块及所述第四区块进行上链处理;
若所述第四区块在所述共识网络中的共识通过结果的数量大于或等于所述数量阈值,且所述第四区块的父区块是所述第三区块,则所述第一共识节点用于删除缓存的所述第一区块及所述第四区块的同级区块,并用于对所述第三区块及所述第四区块进行上链处理;
其中,任一区块的同级区块是指对应的区块高度与所述任一区块对应的区块高度相同的区块,所述第一区块与所述第三区块互为同级区块。
11.根据权利要求9所述的方法,其特征在于,所述方法还包括:
若完成对所述第四区块的共识处理,则缓存所述第四区块;
基于缓存的所述第四区块及所述第四区块的父区块,更新所述第一区块的区块权重、所述第三区块的区块权重及所述第四区块的区块权重。
12.一种共识网络的数据处理装置,其特征在于,所述共识网络包含N个共识节点,N为正整数,所述N个共识节点包括第一主节点;所述装置应用于第一共识节点,所述第一共识节点是所述N个共识节点中除所述第一主节点之外的任一个;所述装置包括:
接收模块,用于接收第二共识节点在第二共识子网络中广播的第一区块;所述第二共识子网络包含所述N个共识节点中的K个共识节点,所述第一共识节点与所述第二共识节点均属于所述第二共识子网络,K为小于N的正整数;所述第二共识节点是所述N个共识节点中除所述第一共识节点之外的任一个;所述第一区块的共识过程是由所述第一主节点发起;
共识模块,用于在所述第二共识子网络中对所述第一区块进行共识处理;若所述第一区块在所述第一共识节点处共识通过,则在所述第一共识节点所属的第一共识子网络中广播所述第一区块,使所述第一区块在所述第一共识子网络中继续被执行共识处理;所述第一共识子网络包含所述N个共识节点中的M个共识节点;M为小于N的正整数;
获取模块,用于在所述共识网络中广播所述第一共识节点针对所述第一区块的共识通过结果,并获取所述第一区块在所述共识网络中的共识通过结果的第一数量,以及根据所述第一数量对所述第一区块进行上链处理。
13.一种计算机程序产品,包括计算机程序/指令,该计算机程序/指令被处理器执行时实现权利要求1-11任一项所述方法的步骤。
14.一种计算机设备,其特征在于,包括存储器和处理器,所述存储器存储有计算机程序,所述计算机程序被所述处理器执行时,使得所述处理器执行权利要求1-11中任一项所述方法的步骤。
15.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,所述计算机程序适用于由处理器加载并执行权利要求1-11任一项所述的方法。
Priority Applications (6)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210800712.6A CN117411894A (zh) | 2022-07-08 | 2022-07-08 | 共识网络的数据处理方法、装置、程序产品、设备和介质 |
KR1020237038211A KR20240007749A (ko) | 2022-07-08 | 2023-04-23 | 컨센서스 네트워크를 위한 데이터 프로세싱 방법 및 장치, 프로그램 제품, 디바이스, 및 매체 |
JP2023572514A JP2024529217A (ja) | 2022-07-08 | 2023-04-23 | コンセンサスネットワークのデータ処理方法、装置、プログラム、及び機器 |
PCT/CN2023/090018 WO2024007689A1 (zh) | 2022-07-08 | 2023-04-23 | 共识网络的数据处理方法、装置、程序产品、设备和介质 |
EP23790211.9A EP4325811A1 (en) | 2022-07-08 | 2023-04-23 | Data processing method and apparatus for consensus network, program product, device, and medium |
US18/370,340 US20240015037A1 (en) | 2022-07-08 | 2023-09-19 | Data processing method and apparatus for consensus network, program product, device, and medium |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210800712.6A CN117411894A (zh) | 2022-07-08 | 2022-07-08 | 共识网络的数据处理方法、装置、程序产品、设备和介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117411894A true CN117411894A (zh) | 2024-01-16 |
Family
ID=89454322
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210800712.6A Pending CN117411894A (zh) | 2022-07-08 | 2022-07-08 | 共识网络的数据处理方法、装置、程序产品、设备和介质 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN117411894A (zh) |
WO (1) | WO2024007689A1 (zh) |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101949712B1 (ko) * | 2018-06-29 | 2019-02-19 | (주) 와이즈엠글로벌 | 계층화되고 확률적인 대표자 선출에 의한 노드증명방식의 합의과정과 대가 배분과정을 가지는 블록체인 생성 방법 |
CN112150141A (zh) * | 2019-06-26 | 2020-12-29 | 京东数字科技控股有限公司 | 一种区块链共识方法、装置和系统 |
CN110570202B (zh) * | 2019-09-02 | 2022-06-03 | 杭州趣链科技有限公司 | 一种基于分片技术的混合共识方法 |
CN112417056B (zh) * | 2020-12-18 | 2023-10-24 | 昆明理工大学 | 一种基于区块链数据共享的信誉值动态分片两层共识方法 |
-
2022
- 2022-07-08 CN CN202210800712.6A patent/CN117411894A/zh active Pending
-
2023
- 2023-04-23 WO PCT/CN2023/090018 patent/WO2024007689A1/zh active Application Filing
Also Published As
Publication number | Publication date |
---|---|
WO2024007689A1 (zh) | 2024-01-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108648084B (zh) | 一种区块链网络的数据处理方法、装置、设备及存储介质 | |
WO2022188831A1 (zh) | 一种基于区块链的区块共识方法以及相关设备 | |
US20230334036A1 (en) | Computer-implemented system and method for managing a large distributed memory pool in a blockchain network | |
CN110431577B (zh) | 用于检测重放攻击的系统和方法 | |
CN113395363B (zh) | 基于区块链的数据处理方法、装置、设备及存储介质 | |
EP4300323A1 (en) | Data processing method and apparatus for blockchain network, computer device, computer readable storage medium, and computer program product | |
CN112235420B (zh) | 基于区块链的数据同步方法、系统及相关设备 | |
CN113409047B (zh) | 基于区块链的数据处理方法、装置、设备及可读存储介质 | |
WO2023071373A1 (zh) | 一种区块链共识方法、装置、设备及存储介质 | |
CN113342838B (zh) | 基于区块链的数据处理方法、装置、设备及可读存储介质 | |
CN112182113B (zh) | 区块链共识方法、系统、电子设备及存储介质 | |
CN112134883B (zh) | 基于可信计算进行节点间信任关系快速认证的方法、装置及相关产品 | |
CN110659905A (zh) | 交易验证方法、装置、终端设备以及存储介质 | |
CN111339183A (zh) | 数据处理方法、边缘节点、数据中心及存储介质 | |
CN112200680B (zh) | 区块链节点管理方法、装置、计算机以及可读存储介质 | |
CN115409507A (zh) | 区块处理方法、区块处理装置、计算机设备及存储介质 | |
CN117411894A (zh) | 共识网络的数据处理方法、装置、程序产品、设备和介质 | |
CN109558744B (zh) | 一种数据处理方法和系统 | |
EP4325811A1 (en) | Data processing method and apparatus for consensus network, program product, device, and medium | |
WO2021063503A1 (en) | Method for enabling efficient evaluation of transactions in a distributed ledger network | |
CN116846958A (zh) | 区块链网络的数据处理方法、装置、计算机设备和介质 | |
CN116846531A (zh) | 信息处理方法、装置、电子设备及存储介质 | |
CN116661674A (zh) | 一种数据压缩方法、区块同步方法及相关设备 | |
CN116846956A (zh) | 区块链网络的数据处理方法、装置、计算机设备和介质 | |
CN117014429A (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 |