CN110474986A - 一种基于区块链系统的共识方法、装置及系统 - Google Patents
一种基于区块链系统的共识方法、装置及系统 Download PDFInfo
- Publication number
- CN110474986A CN110474986A CN201910770124.0A CN201910770124A CN110474986A CN 110474986 A CN110474986 A CN 110474986A CN 201910770124 A CN201910770124 A CN 201910770124A CN 110474986 A CN110474986 A CN 110474986A
- Authority
- CN
- China
- Prior art keywords
- node
- block
- common recognition
- group
- layer
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q40/00—Finance; Insurance; Tax strategies; Processing of corporate or income taxes
- G06Q40/04—Trading; Exchange, e.g. stocks, commodities, derivatives or currency exchange
-
- 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/104—Peer-to-peer [P2P] networks
-
- 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/50—Network services
- H04L67/60—Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/50—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using hash chains, e.g. blockchains or hash trees
-
- Y—GENERAL 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
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE 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/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Abstract
本发明实施例公开了一种基于区块链系统的共识方法、装置及系统,方法包括:针对第i级节点层中的每个节点组,该节点组中的主节点根据该节点组中各节点的共识状态确定该节点组的共识结果,若i大于1,则在第i‑1级节点层进行共识时,将该节点组的共识结果作为该主节点对待共识区块的共识状态;若i等于1,则将该节点组的共识结果作为待共识区块的共识结果。本发明实施例中,在大规模节点的区块链系统中,通过对区块链系统中的大规模节点进行分层分组,可以将大规模节点之间的共识过程转化为每个节点组内的少量节点之间的共识过程,从而减小通信压力,并可以减少每个节点的共识过程所需的时间,使得区块链系统的共识效率得到提升。
Description
技术领域
本发明涉及金融科技(Fintech)技术领域,尤其涉及一种基于区块链系统的共识方法、装置及系统。
背景技术
随着计算机技术的发展,越来越多的技术应用在金融领域,传统金融业正在逐步向金融科技(Fintech)转变,区块链技术也不例外,但由于金融行业的安全性、实时性要求,也对技术提出了更高的要求。在区块链系统中,为了保证交易执行的准确性,通常需要使用多个节点对区块进行共识,若对区块达成共识的节点数量超过预设数量,则说明区块链系统中大多数的节点处理交易所得到的区块是一致的;如此,该区块可以成功出块,且节点也可以根据该区块更新内部的交易数据库。
PBFT共识算法是现有较为常用的一种共识算法,在PBFT共识算法中,当区块链系统每执行完一轮区块共识(即成功出块)后,PBFT共识算法均可以从区块链系统的多个节点中选取出一个主节点,主节点用于在下一轮区块共识中进行区块打包。具体地说,在下一轮区块共识中,主节点可以从交易池中获取待处理的交易数据,并根据待处理的交易数据打包生成原始区块后发送给区块链系统中的其它节点;相应地,区块链系统中的每个节点(包括主节点)可以基于主节点打包的原始区块处理交易得到目标区块,进而将目标区块发送给区块链系统中的其它节点;如此,每个节点可以根据自己的目标区块和其它节点的目标区块确定该节点的共识结果,并将该节点的共识结果发送给其它节点,以使每个节点根据自己的共识结果和其它节点的共识结果确定每个节点是否共识成功,若是,则节点可以更新节点内部的区块数据库,若否,则节点可以不作处理。
显然地,在PBFT共识算法中,由于每个节点均需要与区块链系统中除该节点以外的全部节点进行通信共识,因此PBFT共识算法的通信开销为O(n2);其中,n为节点数。若区块链系统中的节点数量较少,则PBFT共识算法可以具有较小的通信开销,然而,若区块链系统中的节点数量较大,比如数千个节点,则PBFT共识算法需要非常大的通信开销,导致区块链系统的通信压力较大;且,每个节点只有在接收到除该节点以外的全部节点发送的目标区块(或共识结果)后方可执行后续的共识过程(比如确定共识结果,或更新预设数据库),因此区块链系统中的每个节点均可能在长时间内处于等待状态,导致区块链系统的共识效率较低。
综上,目前亟需一种基于区块链系统的共识方法,用以解决在大规模节点的区块链系统中使用PBFT共识算法执行区块共识所导致的通信压力大、共识效率低的技术问题。
发明内容
本发明实施例提供的一种基于区块链系统的共识方法,用以解决在大规模节点的区块链系统中使用PBFT共识算法执行区块共识所导致的通信压力大、共识效率低的技术问题。
第一方面,本发明实施例提供的一种基于区块链系统的共识方法,所述区块链系统包括存在层级关系的N级节点层;其中,每级节点层中包括至少一个节点组,每个节点组中包括一个主节点和至少一个从节点;同一级节点层中的任意两个节点组包括的节点不同;第i-1级节点层中的各节点为第i级节点层包括的各节点组中的主节点;第N级节点层中的各节点为所述区块链系统中全部的共识节点;
针对所述第i级节点层中的每个节点组,所述节点组的主节点根据所述节点组中各节点对待共识区块的共识状态确定所述节点组的共识结果;若所述i大于1,则在所述主节点参与所述第i-1级节点层的共识时,将所述节点组的共识结果作为所述主节点对所述待共识区块的共识状态;若所述i等于1,则将所述第i级节点层中节点组的共识结果作为所述待共识区块的共识结果;其中,i、N为正整数,1≤i≤N。
在上述设计中,在大规模节点的区块链系统中,通过对区块链系统中的大规模节点进行分层分组,可以将大规模节点之间的共识过程转化为每个节点组内的少量节点之间的共识过程,从而极大地降低通信消耗,减小通信压力;且,每个节点只需在该节点所属的节点组中进行共识过程,从而只需等待本节点组中的其他节点发送的共识状态即可执行后续的共识过程,而无需像现有技术需要等待区块链系统中的全部节点发送的共识状态方可执行后续的共识过程,从而可以大大减少每个节点的共识过程所需的时间,使得区块链系统的共识效率得到较大提升。
在一种可能的设计中,第1级节点层中的节点组为第一节点组;在所述节点组的主节点根据所述节点组中各节点对待共识区块的共识状态确定所述节点组的共识结果之前,所述第一节点组的主节点还生成所述待共识区块,并将所述待共识区块发送给所述区块链系统中的任一共识节点;相应地,所述将第1级节点层中节点组的共识结果作为所述待共识区块的共识结果之后,所述第一节点组的主节点还将所述待共识区块的共识结果发送给所述区块链系统中的任一共识节点。
在上述设计中,通过使用第一节点组中的主节点直接向区块链系统中的各个共识节点发送待共识区块或待共识区块的共识结果,可以避免多次调用中间节点层的各个节点组,从而降低中间层的各个节点组的压力;且,相比于通过中间节点层的各个节点组转发待共识区块或待共识区块的共识结果来说,各个共识节点可以更早地接收到待共识区块或待共识区块的共识结果,从而进一步提高区块链系统的共识效率。
在一种可能的设计中,所述第1级节点层中的节点组为第一节点组;在所述节点组的主节点根据所述节点组中各节点对待共识区块的共识状态确定所述节点组的共识结果之前,所述第一节点组的主节点还生成所述待共识区块,并按所述层级关系将所述待共识区块发送给所述第N级节点层中的各节点;相应地,所述将第1级节点层中节点组的共识结果作为所述待共识区块的共识结果之后,所述第一节点组的主节点还按所述层级关系将所述待共识区块的共识结果发送给所述第N级节点层中的各节点。其中,所述按所述层级关系将所述待共识区块或所述待共识区块的共识结果发送给所述第N级节点层中的各节点,包括:针对所述第i-1级节点层中的每个节点组,所述节点组的主节点将所述待共识区块或所述待共识区块的共识结果发送给所述节点组中的任一从节点;所述节点组中的任一节点将所述待共识区块或所述待共识区块的共识结果发送给所述第i级节点层中所述节点所在的节点组中的任一节点。
在上述设计中,通过按照层级关系将待共识区块或待共识区块的共识结果发送给区块链系统中的各个共识节点,使得每个主节点只需在该主节点所属的节点组中同步待共识区块或待共识区块的共识结果,从而将第一节点组中的主节点与区块链系统中的全部共识节点之间的同步过程转化为每个主节点与各自节点组中的从节点之间的同步过程,从而降低第一节点组中的主节点的通信压力。
在一种可能的设计中,所述第一节点组的主节点将所述待共识区块发送给所述第N级节点层中的各节点后,针对于所述第N级节点层中的每个节点组,所述节点组的任一节点还处理所述待共识区块得到所述节点对所述待共识区块的区块信息,并将所述节点对所述待共识区块的区块信息发送给所述节点组中的其它节点;所述节点组的节点根据所述节点对所述待共识区块的区块信息与所述节点组中的其它节点对所述待共识区块的区块信息,确定所述节点对所述待共识区块的共识状态;相应地,所述第一节点组的主节点将所述待共识区块的共识结果发送给所述第N级节点层中的各节点之后,所述区块链系统中的任一共识节点还根据所述待共识区块的共识结果更新所述共识节点内部的预设数据库。
在上述设计中,第N级节点层中每个节点组的主节点可以根据节点组中其它节点的共识状态确定节点组的共识状态,并可以同步给该节点组所属的上一级节点层中的任一节点,从而实现了对每级节点层中的每个节点组均执行区块共识,相比于现有技术中每个节点根据自己的区块信息和其它节点的区块信息直接更新预设数据库来说,可以提高共识结果的准确性。
在一种可能的设计中,在所述区块链系统中的任一共识节点根据所述待共识区块的共识结果更新所述共识节点内部的预设数据库之后,从所述第N级节点层中每个节点组包括的各节点中选举出所述每个节点组在下一轮区块共识中的主节点;进一步地,使用所述第i级节点层中各节点组在下一轮区块共识中的主节点构成所述第i-1级节点层中的各节点组,并从所述第i-1级节点层中每个节点组包括的各节点中选举出所述每个节点组在下一轮区块共识中的主节点。
在上述设计中,设置第N级节点层中各节点组所包括的节点不变,在某一轮区块共识结束后,根据反向层级关系从下一级节点层的各个节点组中重新选取主节点组成上一级节点层中的各个节点组,可以保证不同轮区块共识中每级节点层的每个节点组中的主节点均不同,从而可以实现节点组中的各个节点轮换作主节点,保证区块链系统的运行顺序。
第二方面,本发明实施例提供的一种基于区块链系统的共识装置,所述区块链系统包括存在层级关系的N级节点层;其中,每级节点层中包括至少一个节点组,每个节点组中包括一个主节点和至少一个从节点;同一级节点层中的任意两个节点组包括的节点不同;第i-1级节点层中的各节点为第i级节点层包括的各节点组中的主节点;第N级节点层中的各节点为所述区块链系统中全部的共识节点;针对所述第i级节点层中的每个节点组,所述节点组中的主节点包括:
确定模块,用于根据所述节点组中各节点对待共识区块的共识状态确定所述节点组的共识结果;
处理模块,用于若所述i大于1,则在所述主节点参与所述第i-1级节点层的共识时,将所述节点组的共识结果作为所述主节点对所述待共识区块的共识状态;若所述i等于1,则将所述第i级节点层中节点组的共识结果作为所述待共识区块的共识结果;
其中,i、N为正整数,1≤i≤N。
在一种可能的实现方式中,在所述i等于1时,所述装置还包括生成模块和收发模块;所述生成模块用于:生成所述待共识区块;在所述确定模块根据所述节点组中各节点对待共识区块的共识状态确定所述节点组的共识结果之前,所述收发模块用于:将所述待共识区块发送给所述区块链系统中的任一共识节点或者按照所述层级关系将所述待共识区块发送给所述第N级节点层中的各节点;相应地,在所述处理模块将所述第i级节点层中节点组的共识结果作为所述待共识区块的共识结果,所述收发模块还用于:将所述待共识区块的共识结果发送给所述区块链系统中的任一共识节点或者按照所述层级关系将所述待共识区块发送给所述第N级节点层中的各节点。其中,所述按所述层级关系将所述待共识区块或所述待共识区块的共识结果发送给所述第N级节点层中的各节点,包括:针对所述第i-1级节点层中的每个节点组,所述节点组的主节点将所述待共识区块或所述待共识区块的共识结果发送给所述节点组中的任一从节点;所述节点组中的任一节点将所述待共识区块或所述待共识区块的共识结果发送给第i级节点层中所述节点所在的节点组中的任一节点。
第三方面,本发明实施例提供的一种区块链系统,所述区块链系统包括存在层级关系的N级节点层;其中,每级节点层中包括至少一个节点组,每个节点组中包括一个主节点和至少一个从节点;同一级节点层中的任意两个节点组包括的节点不同;第i-1级节点层中的各节点为第i级节点层包括的各节点组中的主节点;第N级节点层中的各节点为所述区块链系统中全部的共识节点;第一级节点层中的节点组为第一节点组;
所述第一节点组,用于生成待共识区块,并将所述待共识区块发送给所述第N级节点层中的各节点;
所述第N级节点层中的任一节点组,用于处理所述待共识区块,确定所述节点组中的每个节点对所述待共识区块的共识状态;
所述第i级节点层中的任一节点组,用于根据所述节点组中各节点对待共识区块的共识状态确定所述节点组的共识结果;若所述i大于1,则在所述节点组的主节点参与所述第i-1级节点层的共识时,将所述节点组的共识结果作为所述主节点对所述待共识区块的共识状态;若所述i等于1,则将所述第i级节点层中节点组的共识结果作为所述待共识区块的共识结果;
其中,i、N为正整数,1≤i≤N。
在一种可能的设计中,所述第一节点组还用于:将所述待共识区块的共识结果发送给所述第N级节点层中的各节点;相应地,所述第N级节点层中的节点还用于:根据所述待共识区块的共识结果更新所述节点内部的预设数据库。
在一种可能的设计中,在所述i大于1时,所述第i级节点层中的任一节点组还用于:从所述节点组包括的各节点中选举出所述节点组在下一轮区块共识中的主节点,以根据所述第N级节点层中各节点组在下一轮区块共识中的主节点构成所述第i-1级节点层中的各节点组。
第四方面,本发明实施例提供的一种计算设备,包括至少一个处理单元以及至少一个存储单元,其中,所述存储单元存储有计算机程序,当所述程序被所述处理单元执行时,使得所述处理单元执行如上述第一方面任意所述的基于区块链系统的共识方法。
第五方面,本发明实施例提供的一种计算机可读存储介质,其存储有可由计算设备执行的计算机程序,当所述程序在所述计算设备上运行时,使得所述计算设备执行如上述第一方面任意所述的基于区块链系统的共识方法。
本发明的这些方面或其他方面在以下实施例的描述中会更加简明易懂。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简要介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种区块链系统的架构示意图;
图2为本发明实施例提供的一种使用PBFT共识算法处理交易时对应的流程示意图;
图3为本发明实施例提供的一种基于区块链系统的区块共识方法;
图4为本发明实施例提供的一种具有层级结构的区块链系统的架构示意图;
图5为本发明实施例提供的一种层级结构的区块链系统的另一种表示形式;
图6为本发明实施例提供的一种区块共识方法对应的流程示意图;
图7为本发明实施例提供的一种基于区块链系统的共识装置的结构示意图。
具体实施方式
为了使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步地详细描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
金融科技(Fintech)技术领域通常涉及到多种交易,比如,银行的交易可以包括售卡交易、存款交易、贷款交易、保险交易、理财交易等,银行每天的交易量可以达到数千笔甚至数万笔。随着区块链技术的逐步发展,金融科技领域也可以使用区块链技术来处理交易,举例来说,若多家银行之间涉及到相关交易,则可以通过设置联盟链来同步处理相关交易,或者还可以将法院、客户等同时上链,共同维护联盟链的安全和稳定。
区块链系统可以是由多个节点组成的点对点(Peer To Peer,P2P)网络。P2P是一种运行在传输控制协议(Transmission Control Protocol,TCP)协议之上的应用层协议,在区块链系统中的节点可以彼此对等,系统中不存在中心节点,因此每个节点都可以随机地连接其它节点。在区块链系统中,每个节点内部都可以设置有预设数据库,各个节点通过预设数据库共同维护区块链系统中的公共账本,节点内部的预设数据库可以存储区块链系统中的区块数据;其中,区块数据包括区块头和区块体,区块头包括上一区块的哈希值、本区块的哈希值、本区块的块高、时间戳等信息,区块体包括交易数据,比如区块链系统中的节点对该区块进行共识的过程中待处理的交易数据以及处理待处理的交易数据得到的交易结果。
图1为本发明实施例提供的一种区块链系统的架构示意图,如图1所示,区块链系统中可以包括一个或多个节点,比如节点101、节点102、节点103与节点104,节点101~节点104中的任意两个节点可以通信连接,从而共同维护区块链系统。其中,任意两个节点可以通过有线方式连接,或者也可以通过无线方式连接,具体不作限定。
本发明实施例中,区块链系统中的节点可以具有多种功能,比如,路由功能、交易功能、区块链功能和共识功能等。具体地说,区块链系统中的节点可以把其他节点传送过来的交易数据等信息传送给更多的节点以实现节点之间的通信;或者,区块链系统中的节点可以用于支持用户进行交易;或者,区块链系统中的节点可以用于记录历史上的所有交易;或者,区块链系统中的节点可以通过验证和记录交易生成区块链中的新区块。实际应用中,路由功能是区块链系统中的每个节点必须具有的功能,而其它功能可由本领域技术人员根据实际需要进行设置。
需要说明的是,区块链系统中的一个节点可以在一台物理机(服务器)上,且一个节点具体可以是指服务器中运行的一个进程或者一系列进程。比如,区块链网络中的节点101可以为一个服务器上运行的一个进程,或者也可以为是指服务器,具体不作限定。
如图1所示,该系统架构中还可以包括客户端设备200,客户端设备200可以通过接入区块链网络与区块链系统中的任一节点连接。具体实施中,客户端设备200可以将交易发送给区块链系统中的任一节点,区块链系统中的某一节点在接收到交易后,可以将交易同步给区块链系统中的其它节点。该节点在同步交易后,还可以将交易存储在节点内部的交易池中;相应地,其它节点在接收到该节点同步的交易后,也可以将交易存储在其它节点内部的交易池中。如此,若某一节点确定处理多条交易,则可以从内部的交易池中获取多条交易,进而进行后续的交易处理及区块共识。
其中,交易可以以栈的形式存储在交易池中;如此,若某一节点确定处理多条交易,则可以从内部的交易池中获取最早入栈的多条交易进行后续的处理及共识过程。
基于图1所示意的系统架构,图2为使用PBFT共识算法处理交易时对应的流程示意图,如图2所示,PBFT共识算法处理交易的过程可以分为三个阶段:pre-prepare阶段、prepare阶段和commit阶段。下面分别描述着三个阶段的具体实现过程。
pre-prepare阶段
采用PBFT共识算法,在每次成功执行一轮区块共识后,均可以从区块链系统的多个节点中选取一个节点作为主节点,将其它节点作为从节点;其中,成功执行一轮区块共识可以通过多种方式来确定,比如若检测到节点的内存中新增加了一个历史区块,则可以认为成功执行了一轮区块共识,或者若检测到节点更新了内部的预设数据库,则可以认为成功执行了一轮区块共识,等等。
PBFT共识算法可以从区块链系统的多个节点中轮流选取不同的节点作为主节点;具体地说,每个节点内部均可以设置一个视窗数值v,若上一轮区块共识执行成功,则每个节点内部的视窗数值v可以被置零,若上一轮区块共识执行失败,则每个节点内部的视窗数值v递增(即加1)。相应地,每个节点若检测到该节点的内存中新增加了一个历史区块,或者检测到该节点更新了内部的预设数据库,则可以按照如下公式确定下一轮区块共识的主节点的编号:
leader=(h+v)%n
其中,leader为主节点的编号,h为当前区块高度,v为视窗数值,n为区块链系统中的节点数量。
在一个示例中,每个节点可以将各自确定的主节点的编号发送给区块链系统中的其它节点,若对某一主节点的编号共识通过的节点数量大于预设数量,则可以将该编号对应的节点作为下一轮区块共识的主节点。在另一个示例中,每个节点确定主节点的编号后,若自己的节点标识与主节点的编号匹配,则该节点自动作为下一轮区块共识的主节点;若自己的节点标识与主节点的编号不匹配,则可以作为从节点,并不作任何处理,等待执行下一轮区块共识即可。
举例来说,表1为本发明实施例提供的一种节点标识与主节点的编号的对应关系的示意表。
表1:一种节点标识与主节点的编号的对应关系的示意
主节点的编号 | 节点标识 |
0 | 节点101 |
1 | 节点102 |
2 | 节点103 |
3 | 节点104 |
如表1所示,若节点确定出的主节点的编号为0,则可以将节点101作为下一轮区块共识的主节点,将节点102、节点103和节点104作为下一轮区块共识的从节点;若节点确定出的主节点的编号为1,则可以将节点102作为下一轮区块共识的主节点,将节点101、节点103和节点104作为下一轮区块共识的从节点;若节点确定出的主节点的编号为2,则将节点103作为下一轮区块共识的主节点,将节点101、节点102和节点104作为下一轮区块共识的从节点;若节点确定出的主节点的编号为4,则将节点104作为下一轮区块共识的主节点,将节点101、节点102和节点103作为下一轮区块共识的从节点。
比如,若上一轮区块共识的主节点为节点101,且节点101的内存中存储了一条新的历史区块1,则视窗数值v被置零,区块链系统中的节点数量为4,因此,节点101(或节点102~节点104)使用上述公式确定出的主节点的编号为1;基于表1可知,下一轮区块共识的主节点可以为节点102,使用主节点102执行区块2的共识。相应地,若节点101长时间未响应,则节点的内存中最大的历史区块仍为0,由于上一轮区块共识失败,因此视窗数值v递增为1,如此,节点101(或节点102~节点104)使用上述公式确定出的主节点的编号为1,即下一轮区块共识的主节点可以为节点102,使用主节点102执行区块1的共识。
在pre-prepare阶段中,若某一轮区块共识的主节点为节点101,且节点101的内存中存储的最大区块为区块1,则主节点101可以从主节点101的交易池中获取该轮区块共识待处理的交易数据,并根据该轮区块共识待处理的交易数据打包区块2,生成prepare包。具体地说,主节点101可以使用区块1的哈希值、区块2的块高以及当前的时间戳组装区块2的区块头,并可以使用该轮区块共识待处理的交易数据组装区块2的区块体,进而可以根据区块2的区块头和区块体生成prepare包。进一步地,主节点101可以将prepare包发送给区块链系统中的任一节点,即节点102、节点103和节点104。至此,pre-prepare阶段执行结束。
显然地,在pre-prepare阶段中,主节点需要向区块链系统中除主节点以外的所有节点发送prepare包,因此pre-prepare阶段对应的通信开销为(n-1),即O(n)。
prepare阶段
在prepare阶段中,区块链系统中的任一节点接收到主节点101发送的prepare包后,均可以解析prepare包得到该轮区块共识待处理的交易数据;如此,该节点可以执行该轮区块共识待处理的交易数据得到交易结果。进一步地,该节点可以根据交易结果生成第一哈希值,根据每一条交易的收据信息生成第二哈希值,根据交易的请求消息生成第三哈希值,进而根据第一哈希值、第二哈希值和第三哈希值生成区块2的哈希值。如此,该节点可以将区块2的哈希值组装到区块2的区块头中、将该轮区块共识待处理的交易数据的交易结果组装到区块2的区块体中,并使用该节点的私钥、区块2的区块头和区块2的区块体生成该节点的签名包,进而可以将该节点的签名包发送给区块链系统中的其它节点,至此,prepare阶段执行结束。
显然地,在prepare阶段中,每个节点均需要向区块链系统中除该节点以外的所有节点发送签名包,因此prepare阶段对应的通信开销为n*(n-1),即O(n2)。
commit阶段
在commit阶段中,区块链系统中的任一节点内部均可以存储有区块链系统中所有节点的公钥,如此,任一节点在确定其它节点发送的签名包到达该节点后,可以先从该节点内部获取其它节点的公钥,并使用其它节点的公钥对其它节点的签名包进行解密,得到其它每个节点处理交易确定的区块2(包括区块头和区块体)。进一步地,任一节点可以将自己处理交易确定的区块2与任一其它节点处理交易确定的区块2进行对比,若相同,则可以接收所述其它节点发送的签名包,若不同,则可以拒绝所述其它节点发送的签名包。
针对于区块链系统中的任一节点,若该节点接收到的签名包的数量小于预设阈值,说明该节点为异常节点,因此该节点可以不作后续操作,等待运维人员进行后续维护即可;相应地,若该节点接收到的签名包的数量大于或等于预设阈值,则说明该节点处理交易得到的区块2与区块链系统中其它大部分节点处理交易得到的区块2相同,即该节点生成的区块2处于待提交状态;如此,该节点可以根据该节点处理交易得到的区块2生成commit包,并可以将commit包发送给区块链系统中的其它节点,commit包用于指示该节点处于待提交状态。其中,预设阈值可以由本领域技术人员根据经验进行设置,不作限定比如,预设阈值可以设置为
进一步地,区块链系统中的任一节点在确定其它节点发送的commit包到达该节点后,可以解析其它节点的commit包得到其它每个节点处理交易确定的区块2(包括区块头和区块体);如此,该节点可以将自己处理交易确定的区块2与任一其它节点处理交易确定的区块2进行对比,若相同,则可以接收所述其它节点发送的commit包,若不同,则可以拒绝所述其它节点发送的commit包。相应地,若该节点接收到的commit包的数量小于预设阈值,说明该节点为异常节点,因此该节点可以不作后续操作,等待运维人员进行后续维护即可;相应地,若该节点接收到的签名包的数量大于或等于commit包,则说明该节点处理交易得到的区块2与区块链系统中其它大部分节点处理交易得到的区块2相同,如此,该节点可以从内存中获取该节点处理交易所生成的区块2,并可以将区块2写入该节点内部的预设数据库中,从而完成该轮区块共识。至此,commit阶段执行结束。
显然地,在commit阶段中,每个节点均需要向区块链系统中除该节点以外的所有节点发送签名包,因此commit阶段对应的通信开销为n*(n-1),即O(n2)。
根据上述三个阶段的内容可知,PBFT共识算法在处理交易时,所需的通信开销为(n-1)+2n*(n-1),即O(n2)。采用该种方式,若区块链系统为大规模节点的区块链系统,比如节点数量为1000,则其通信开销达到了106,该通信开销非常巨大,导致区块链系统的通信压力较大;相应地,每个节点在prepare阶段和commit阶段均需要等待区块链系统中的其它全部节点发送的签名包或commit包方可执行后续的共识过程,导致节点需要等待相当长的时间,在该时间内节点处于不工作状态,从而导致节点的处理效率较低,区块链系统的共识效率较低。
基于此,本发明实施例提供了一种区块链系统,用以解决在大规模节点的区块链系统中使用PBFT共识算法执行区块共识所导致的通信压力大、共识效率低的技术问题。
图3为本发明实施例提供的一种基于区块链系统的区块共识方法,该方法包括:
步骤301,在执行每轮区块共识之前,确定区块链系统中的节点数量是否大于预设数量,若是,则执行步骤302,若否,则执行步骤304。
在一种可能的实现方式中,可以在区块链系统中设置监控器,监控器可以监控区块链系统当前的区块共识情况,若监测到某一轮区块共识结束,或者监测到新一轮区块共识即将开始,则可以获取当前区块链系统中的节点数量。进一步地,若当前区块链系统中的节点数量大于预设数量,说明区块链系统为大规模节点的区块链系统,则可以执行步骤302;若节点数量小于或等于预设数量,说明区块链系统为小规模节点的区块链系统,则可以执行步骤304。
其中,预设数量可以由本领域技术人员根据经验进行设置,由于PBFT共识算法可以较好地处理节点数量在100以内的区块链系统,因此预设数量可以设置为100。
步骤302,对区块链系统中的节点进行分层分组,将区块链系统转化为层级结构。
在一种可能的分层分组方式中,可以将区块链系统中的共识节点划分为N级(即两级或两级以上)节点层,每级节点层中包括多个节点组,每个节点组包括一个主节点和多个从节点,每级节点层中的任意两个节点组中的节点不同,第N级节点层包括区块链系统中的全部共识节点,第一级节点层仅包含第一节点组;且,针对于任一级节点层中的任一节点组,该节点组中的每个节点均为下一级节点层中对应节点组的主节点。其中,节点组中的主节点可以为采用PBFT共识算法从该节点组的多个节点中轮流确定的。
具体实施中,可以先将区块链系统中的全部共识节点划分为多个节点组,并使用多个节点组构成第N级节点层,然后在每轮区块共识之前,使用PBFT共识算法从第N级节点层的每个节点组中选取一个主节点(每个节点组在该轮区块共识中的主节点不同于在上一轮区块共识中的主节点),进而再将第N级节点层选取出的多个主节点划分为多个节点组,并使用多个节点组构成第N-1级节点层,……,将第二级节点层选取出的多个主节点构成第一节点组,并使用第一节点组构成第一级节点层。
在一种可能的划分方式中,可以按照预设阈值划分多个节点得到多个节点组,比如在预设阈值为10时,若区块链系统中存在1000个共识节点,分别为共识节点1、共识节点2、共识节点3、……、共识节点1000,则可以将1000个共识节点划分为节点组1、节点组2、节点组3、……、节点组100,节点组1包括共识节点1、共识节点2、共识节点3、……、共识节点10,节点组2包括共识节点11、共识节点12、共识节点13、……、共识节点20,……,节点组100包括共识节点991、共识节点992、共识节点993、……、共识节点1000;节点组1、节点组2、节点组3、……、节点组100构成了第N级节点层。又比如,若区块链系统中存在995个共识节点,分别为共识节点1、共识节点2、共识节点3、……、共识节点995,在预设阈值为10时,则可以将1000个共识节点划分为节点组1、节点组2、节点组3、……、节点组100,节点组1包括共识节点1、共识节点2、共识节点3,……、共识节点10,节点组2包括共识节点11、共识节点12、共识节点13、……、共识节点20,……,节点组100包括共识节点991、共识节点992、共识节点993、共识节点994、共识节点995。
本发明实施例中,监控器可以实时监控区块链系统中的节点,在节点未发生变化时,第N级节点层中的节点组可以始终保持不变;若监控到区块链系统中的节点发生变化,则可以根据变化类型更新第N级节点层。举例来说,若监控到区块链系统中新增了一个共识节点1001,则可以将共识节点1001插入节点组1~节点组100中的任一节点组,或者也可以新增一个节点组101,将共识节点1001设置为节点组101中唯一的节点,如此,第N级节点层中包括节点组1~节点组101;若监控到区块链系统中共识节点50退出区块链,则可以将共识节点50从节点组5中删除;若监控到区块链系统中退出较多的共识节点或新增较多的共识节点,使得区块链系统中的共识节点变化情况较大,则可以重新按照上述方式划分区块链系统的当前共识节点得到多个新的节点组,并使用多个新的节点组构成第N级节点层。
进一步地,在每轮区块共识之前,针对于第N级节点层的节点组1~节点组100,可以采用PBFT共识算法从节点组1~节点组100的每个节点组中选择一个主节点,并按照预设阈值划分多个主节点得到多个节点组,使用多个节点组构成第N-1级节点层。举例来说,若第一轮区块共识之前,从节点组1中选出的主节点为共识节点2,从节点组2中选出的主节点为共识节点12,从节点组3中选出的主节点为共识节点22,……,从节点组100中选出的主节点为共识节点992,则可以将共识节点2、共识节点12、共识节点22、……、共识节点992划分为节点组110、节点组120、节点组130、……、节点组200,节点组110包括共识节点2、共识节点12、共识节点22、……、共识节点92,节点组120包括共识节点102、共识节点112、共识节点122、……、共识节点192,……,节点组200包括共识节点902、共识节点912、共识节点922、……、共识节点992;节点组110、节点组120、节点组130、……、节点组200构成了第N-1级节点层。
需要说明的是,区块链系统中的共识节点数量越多,则节点层的层级较多,构成第N-2级节点层、第N-3级节点层、……、第二级节点层、第一级节点层的过程均可以参照构成第N-1级节点层的过程进行实现,此处不再赘述。
本发明实施例中,当区块链系统中的共识节点不发生变化时,第N级节点层中的节点组数量以及每个节点组中的节点均不会发生变化;但是由于上一级节点层是由下一级节点层中的主节点构成的,PBFT共识算法会在每轮区块共识之前改变第N级节点层中每个节点组的主节点,因此,每轮区块共识对应的第N-1级节点层~第一级节点层中的节点组均不同于上一轮区块共识对应的第N-1级节点层~第一级节点层中的节点组。
需要说明的是,上述仅是一种示例性的简单说明,并不构成对方案的限定,在具体实施中,可以由本领域技术人员根据经验设置划分节点的方式,或者可以根据实际场景设置划分节点的方式;比如,每级节点层可以采用相同的划分方式划分得到各自对应的多个节点组,或者也可以采用不同的划分方式划分得到各自对应的多个节点组,且,可以采用同一预设阈值划分节点得到多个节点组,或者也可以采用不同的预设阈值划分节点得到多个节点组,或者还可以采用随机数划分节点得到多个节点组,具体不作限定。
图4为本发明实施例提供的一种具有层级结构的区块链系统的架构示意图,如图4所示,该区块链系统可以包括第一级节点层、第二级节点层和第三级节点层,第三级节点层中包括区块链系统中的全部共识节点,即节点1、节点2、节点3、……、节点1000。在第三级节点层中,节点1~节点1000按照预设阈值10进行划分,得到节点组a3,1、节点组a3,2、节点组a3,3、……、节点组a3,100,节点组a3,1包括节点1、节点2、节点3、……、节点10,节点组a3,2包括节点11、节点12、节点13、……、节点20,……,节点组a3,100包括节点991、节点992、节点993、……、节点1000。
如图4所示,设定在执行某一轮区块共识之前,节点组a3,1中的主节点(粗线圈对应的节点)为节点1,节点组a3,2中的主节点为节点11,……,节点组a3,100中的主节点为节点991,则在第二级节点层中,节点1、节点11、……、节点991按照预设阈值10进行划分,得到节点组a2,1、节点组a2,2、节点组a2,3、……、节点组a2,10,节点组a2,1包括节点1、节点11、节点21、……、节点91,节点组a2,2包括节点101、节点111、节点121、……、节点191,……,节点组a2,10包括节点901、节点911、节点921、……、节点991。相应地,设定在执行该轮区块共识之前,节点组a2,1中的主节点为节点11,节点组a2,2中的主节点为节点111,……,节点组a2,10中的主节点为节点911,则在第一级节点层中,节点11、节点111、……、节点911构成节点组a1。
本发明实施例中,若采用同一预设阈值划分节点,则区块链系统中节点层的级数(或层数)N可以为:
N=logmn
其中,m为预设阈值,n为区块链系统中共识节点的数量。
相应地,第N级节点层中节点组的数量gN可以为:
gN=n/m
第i级节点层中节点组的数量gi可以为:
gi=gi+1/m
其中,gi+1为第i+1级节点层中节点组的数量。
为了便于清晰地理解图4所示意的层级结构的区块链系统,图5为层级结构的区块链系统的另一种表示形式,为了便于描述,图5仅示意出了第二级节点层和第一级节点层中各个节点组的构成。
如图5所示,第一级节点层中的各个节点同时位于第一级节点层和第二级节点层的节点组中,比如,第一级节点层中的节点1同时位于节点组a1和节点组a2,1中,第一级节点层中的节点101同时位于节点组a1和节点组a2,2中,……,第一级节点层中的节点901同时位于节点组a1和节点组a2,10中。可以理解地,若扩展至图4中的三级节点层,则第一级节点层中的各节点同时位于第一级节点层、第二级节点层和第三级节点层的节点组中,第二级节点层的各节点中除第一级节点层中各节点以外的节点同时位于第二级节点层和第三级节点层的节点组中。
步骤303,按照区块链系统的层级结构执行所述每轮区块共识。
具体实施中,在任一轮区块共识之前,可以从第N级节点层的每个节点组中选取不同于上一轮区块共识的主节点,并使用从第N级节点层中选取出的多个主节点构成第N-1级节点层的各个节点组;进而可以从第N-1级节点层的每个节点组中选取主节点,并使用从第N-1级节点层中选取出的多个主节点构成第N-2级节点层的各个节点组,依次按照该种方式构建上一级节点层中的各个节点组,直至构建第一级节点层中的第一节点组。如此,该轮区块共识对应的区块链层级结构构建完成,后续可以基于该区块链层级结构执行该轮区块共识。
步骤304,使用PBFT共识算法执行该轮区块共识。
若区块链系统中的共识节点数量小于预设数量,说明当前区块链系统为小规模节点的区块链系统,即使用PBFT共识算法处理该轮区块共识的通信压力并不大;因此,可以直接使用PBFT共识算法执行该轮区块共识,具体实现可以参照图2所示,不再赘述。
基于图4和图5所示意的层级结构的区块链系统,图6为本发明实施例提供的一种区块共识方法对应的流程示意图,该方法包括:
步骤601,第一级节点层中第一节点组的主节点打包区块,得到待共识区块,并同步给第一级节点层中第一节点组的从节点。
在一种可能的实现方式中,上一轮区块共识结束后,若成功构建了区块链系统的层级结构,则区块链系统中的每个共识节点均可以将该共识节点所在的节点组、所在的节点组所属的层级以及所在的节点组包括的其它节点的标识存储在该共识节点的内存中;如此,若后续该共识节点需要在该共识节点所在的节点组中同步信息,则可以从该共识节点的内存中获取所在节点组包括的其它节点的标识,从而将信息同步给其它节点。
其中,上述信息可以以对应关系表的形式进行存储,表2为本发明实施例提供的一种可能的对应关系表的示意表。
表2:一种对应关系表的示意
如表2所示,节点111的对应关系表中可以存储有节点111在每级节点层中所在的节点组和所在的节点组中的其它节点,比如,节点111在第一级节点层的节点组a1中,节点组a1中除了包括节点组111以外,还可以包括节点11、节点211、节点311、节点411、节点511、节点611、节点711、节点811、节点911;相应地,节点111在第二级节点层的节点组a2,2中,节点组a2,2中除了包括节点组111以外,还可以包括节点101、节点121、节点131、节点141、节点151、节点161、节点171、节点181、节点191;节点111在第三级节点层的节点组a3,12中,节点组a3,12中除了包括节点组111以外,还可以包括节点112、节点113、节点114、节点115、节点116、节点117、节点118、节点119、节点120。
需要说明的是,基于图4所示意的层级结构的区块链系统,第一级节点层中的每个节点的对应关系表中可以包含该节点分别在第一级节点层、第二级节点层和第三级节点层中所在的节点组以及所在的节点组包括的其它节点;第二级节点层中除第一级节点层中的节点以外的每个节点的对应关系表中可以包含该节点分别在第二级节点层和第三级节点层中所在的节点组以及所在的节点组包括的其它节点;第三级节点层中除第二级节点层中的节点以外的每个节点的对应关系表中可以包含该节点在第三级节点层中所在的节点组以及所在的节点组包括的其它节点。
为了便于描述,本发明实施例将第一级节点层中的节点组称为第一节点组。
具体实施中,在上一轮区块共识结束、本轮区块共识启动后,第一节点组的主节点可以从内部的交易池中获取本轮区块共识待处理的交易数据,并可以根据待处理的交易数据打包区块。基于图4,由于第一节点组为节点组a1,且本轮区块共识中节点组a1的主节点为节点111,因此,主节点111可以执行打包区块的过程。
其中,第一节点组的主节点可以按照步骤1~步骤3打包区块:
步骤1,从内存缓存的历史区块中获取历史最大区块的块高和历史最大区块的哈希值,并根据历史最大区块的块高设置待共识区块的块高;
步骤2,使用当前时间戳、待共识区块的块高以及历史最大区块的哈希值组装待共识区块的区块头,并使用本轮区块共识待处理的交易数据组装待共识区块的区块体。
步骤3,将待共识区块的区块头和待共识区块的区块体分别写入prepare包的对应位置,生成prepare包。
步骤602,第一级节点层中节点组的主节点将待共识区块传送给第N级节点层中的任一节点。
本发明实施例中,第一节点组的主节点可以按照多种方式传送prepare包给第N级节点层中的任一节点,下面描述两种可能的传送方式:
在一种可能的传送方式中,第一节点组的主节点可以按照本轮区块共识对应的层级结构传送prepare包给第N级节点层中的任一节点,具体地说,第一节点组的主节点可以先将prepare包发送给第一节点组中的任一从节点,进而由任一从节点将prepare包发送给下一级节点层中该从节点所在的节点组中的任一从节点,直至不存在下一节点层为止。
举例来说,主节点111在得到prepare包后,通过查询表2所示的对应关系表确定主节点111在第一级节点层的节点组a1中,从而可以将prepare包同步给节点组a1中的任一从节点,即节点11、节点211、节点311、节点411、节点511、节点611、节点711、节点811和节点911;相应地,针对于第一节点组中的任一节点(比如节点11),节点11通过查询内部存储的对应关系表确定节点11在第二级节点层的节点组a2,1中,从而节点11可以将prepare包同步给节点组a2,1中的任一从节点,即节点1、节点21、节点31、节点41、节点51、节点61、节点71、节点81和节点91;进一步地,针对于节点组a2,1中的任一节点(比如节点1),节点1通过查询内部存储的对应关系表确定节点1在第三级节点层的节点组a3,1中,从而节点1可以将prepare包同步给节点组a31中的任一从节点,即节点2、节点3、节点4、节点5、节点6、节点7、节点8和节点9。如此,通过按照层级关系依次同步prepare包,区块链系统中的任一共识节点均可以接收到prepare包。
在上述传送方式中,通过按照层级关系将待共识区块或待共识区块的共识结果发送给区块链系统中的各个共识节点,使得每个主节点只需在该主节点所属的节点组中同步待共识区块或待共识区块的共识结果,从而将第一节点组中的主节点与区块链系统中的全部共识节点之间的同步过程转化为每个主节点与各自节点组中的从节点之间的同步过程,从而降低第一节点组中的主节点的通信压力。
在另一种可能的传送方式中,由于区块链系统中的任意两个节点可以相互通信,因此,第一节点组的主节点在生成prepare包后,可以直接将prepare包发送给区块链系统中的所有共识节点,比如主节点111直接将prepare包发送给节点1~节点110以及节点112~节点1000。在该种传送方式中,通过使用第一节点组中的主节点直接向区块链系统中的各个共识节点发送待共识区块,可以避免多次调用中间节点层的各个节点组,从而降低中间层的各个节点组的压力;且,相比于通过中间节点层的各个节点组转发待共识区块来说,各个共识节点可以更早地接收到待共识区块,从而进一步提高区块链系统的共识效率。
步骤603,第N级节点层中任一节点组的主节点根据该节点组中各节点对待共识区块的共识状态确定该节点组的共识结果。
具体实施中,针对于第N级节点层中任一节点组中的任一节点,该节点在确定prepare包到达该节点后,可以先对prepare包进行合法性验证,若确定prepare包合法,则可以接收prepare包;若确定prepare包不合法,则可以拒绝接收prepare包,并可以向用户发送告警信息,比如可以通过微信、钉钉、邮件等将告警信息推送给用户。
其中,合法性验证的具体过程可以为:节点解析prepare包得到本轮区块共识对应的当前时间戳、待共识区块的块高、历史最大区块的哈希值以及本轮区块共识待处理的交易数据,并查询该节点内部缓存的历史区块确定节点对应的历史最大区块的块高和哈希值。若确定待共识区块的块高等于节点对应的历史最大区块的块高加一,且本轮区块共识对应的历史最大区块的哈希值等于节点对应的历史最大区块的哈希值,则确定prepare包合法;相应地,若确定待共识区块的块高大于节点对应的历史最大区块的块高加一,说明待共识区块为已共识过的历史区块,或者若确定待共识区块的块高小于节点对应的历史最大区块的块高加一,说明节点内部缓存的区块落后于其它节点,或者本轮区块共识对应的历史最大区块的哈希值不等于节点对应的历史最大区块的哈希值,节点均可以确定prepare包不合法。通过对prepare包进行合法性验证,可以过滤已处理的区块,提高交易处理的准确性。
进一步地,节点可以处理本轮区块共识中待处理的交易数据,得到交易结果,并可以基于交易数据、交易结果和每条交易的收据确定待共识区块的哈希值;如此,节点可以使用交易数据和交易结果组装待共识区块的区块体,并使用待共识区块的哈希值、待共识区块的块高、当前时间戳和最大历史区块的哈希值组装待共识区块的区块头,并可以使用节点的私钥、更新后的待共识区块的区块头以及待共识区块的区块体生成节点对应的签名包,进而可以通过查询节点内部的对应关系表确定节点在第N级节点层中所在的节点组,并可以将节点对应的签名包发送给节点在第N级节点层中所在的节点组中的任一节点。
相应地,针对于第N级节点层的任一节点组中的任一节点,该节点在确定所在节点组中的任一节点对应的签名包到达该节点后,可以先使用所述任一节点的公钥解析所述任一节点对应的签名包,并基于自己的签名包对解析所述任一节点对应的签名包得到的信息进行合法性验证,若确定所述任一节点对应的签名包合法,则可以接收所述任一节点对应的签名包;若确定所述任一节点对应的签名包不合法,则可以拒绝接收所述任一节点对应的签名包。其中,对签名包进行合法性验证的过程可以参照对prepare包进行合法性验证的过程来实现,区别在于对签名包进行合法性验证时还需要验证交易处理结果以及待共识区块的哈希值。
在一个示例中,每个节点内部可以仅存储该节点所在的节点组中其它节点的公钥,而无需存储区块链系统中全部共识节点的公钥,从而可以降低公钥在节点内部占用的资源;比如,由于节点1仅在节点组a3,1中,因此节点1内部可以仅存储节点2~节点10的公钥。其中,其它节点的公钥可以由监控器根据每轮区块共识中的分层分组情况发送给每个节点,或者也可以由节点根据每轮区块共识中的分层分组情况从区块链系统的公共数据库中获取,具体不作限定。
进一步地,针对于第N级节点层的任一节点组中的任一节点,该节点可以统计已成功接收的签名包的数量,若已成功接收的签名包的数量小于预设数量,说明该节点生成的待共识区块与所在节点组中的大部分节点不同,该节点处理的交易结果故障,因此该节点可以不作任何处理;相应地,若已成功接收的签名包的数量大于或等于预设数量,说明该节点生成的待共识区块与所在节点组中的大部分节点相同,该节点处理的交易结果正常,因此该节点可以根据该节点对应的待共识区块生成该节点对应的commit包,并可以将该节点对应的commit包发送给该节点在第N级节点层中所在的节点组中的任一节点。其中,预设数量可以有本领域技术人员根据经验进行设置,比如可以其中,n为区块链系统中的节点数量。
相应地,针对于第N级节点层的任一节点组中的任一节点,该节点在确定所在节点组中的任一节点对应的commit包到达该节点后,可以先使用所述任一节点的公钥解析所述任一节点对应的commit包,并基于自己的commit包对解析所述任一节点对应的commit包得到的信息进行合法性验证,若确定所述任一节点对应的commit包合法,则可以接收所述任一节点对应的commit包;若确定所述任一节点对应的commit包不合法,则可以拒绝接收所述任一节点对应的commit包。其中,对commit包进行合法性验证的过程可以参照对签名包进行合法性验证的过程来实现,不再赘述。
进一步地,针对于第N级节点层的任一节点组中的任一节点,该节点可以统计已成功接收的commit包的数量,若已成功接收的commit包的数量小于预设数量,说明该节点的共识结果与所在节点组中的大部分节点的共识结果不同,该节点的共识过程故障,因此该节点可以不作任何处理;相应地,若已成功接收的commit包的数量大于或等于预设数量,说明该节点的共识结果与所在节点组中的大部分节点的共识结果相同,该节点的共识过程正常,因此该节点可以将状态更新为待提交状态。
如此,针对于第N节点层中的任一节点组,该节点组的主节点可以根据该节点组中各节点的状态确定该节点组中处于待提交状态的节点数量,若处于待提交状态的节点数量大于或等于预设数量,则该节点组的主节点可以根据其得到的待共识区块生成commit_t包;其中,t为该节点组的标识,commit_t包用于指示该节点组对待共识区块的共识结果。举例来说,节点组a3,1的主节点1可以生成commit_a3,1包,commit_a3,1可以为根据主节点1的私钥、主节点1生成的待共识区块的区块头和待共识区块的区块体生成的。相应地,若处于待提交状态的节点数量小于预设数量,则该节点组的主节点可以不作任何处理。
需要说明的是,若某一节点组中的主节点未能接收到预设数量的签名包,或未能接收到预设数量的commit包,说明主节点的共识过程有误,因此,主节点可以不作任何处理,即可以不生成commit_t包。
步骤604,在第j级节点层不为第一级节点层时,第j级节点层中任一节点组的主节点将该节点组的共识结果发送给第j-1级节点层中该主节点所在的节点组中的任一节点。
以第j级节点层为第N级节点层为例,具体实施中,针对于第N级节点层中的任一节点组,该节点组的主节点可以查询该主节点内部的对应关系表,确定该主节点在第N-1级节点层中所在的节点组,并可以将该主节点对应的commit_t包发送给该主节点在第N-1级节点层中所在的节点组中的任一从节点。举例来说,第三级节点层中节点组a3,2的主节点11可以查询主节点11内部的对应关系表,确定主节点11在第二级节点层的节点组a2,1中,从而可以将commit_a3,2同步给节点组a2,1中的任一从节点,即节点1、节点21、节点31、节点41、节点51、节点61、节点71、节点81和节点91。
步骤605,第j-1级节点层中任一节点组的主节点根据该节点组中各节点对待共识区块的共识状态确定该节点组的共识结果。
具体实施中,针对于第j-1级节点层中任一节点组的任一节点,该节点在确定所在节点组中其它任一节点对应的commit_t包到达该节点后,可以先使用所述其它任一节点的公钥解析所述其它任一节点对应的commit_t包,再使用该生成的commit_t包对所述其它任一节点对应的commit_t包进行合法性验证,若验证合法,则该节点可以接收所述其它任一节点对应的commit_t包,若验证不合法,则该节点可以拒绝接收所述其它任一节点对应的commit_t包。
举例来说,第二级节点层中节点组a2,1的节点31在确定节点1、节点11、节点21、节点41、节点51、节点61、节点71、节点81和节点91中的任一节点(比如节点1)发送的commit_t包(即commit_a3,1包)到达节点31后,可以使用节点1的公钥解析commit_a3,1包,并使用其生成的commit_a3,2包对commit_a3,1包进行合法性验证;若验证commit_a3,1包合法,则节点31可以接收节点1发送的commit_a3,1包,若验证commit_a3,1包不合法,则节点31可以拒绝接收节点1发送的commit_a3,1包。
进一步地,第j-1级节点层中任一节点组的任一节点若确定接收到的commit_t包的数量大于预设数量,则可以将该节点的状态更新为待提交状态;相应地,该节点组中的主节点在确定该节点组中存在预设数量的节点达到待提交状态后,可以根据其对应的待共识区块生成该节点组对应的commit_t包,该节点组对应的commit_t包用于指示该节点组对待共识区块的共识结果。
需要说明的是,节点可以按照节点组的标识更新节点的状态,即节点的状态可以同时包括待提交状态和对应节点组的标识;比如,节点1同时在节点组a1,1和节点组a2,1中,因此节点1对应存在节点组a1,1对应的状态和节点组a2,1对应的状态,从而避免不同节点组中同一节点的状态的互相干扰。
步骤606,确定第j-1级节点层是否为第一级节点层,若否,则执行步骤604,若是,则执行步骤607。
本发明实施例中,针对于第j-1级节点层中的任一节点组,若该节点组中的主节点查询内部的对应关系表确定不存在上一级节点层包含该主节点,则可以确定第j-1级节点层为第一级节点层;若该节点组中的主节点查询内部的对应关系表确定存在上一级节点层包含该主节点,则可以确定第j-1级节点层不为第一级节点层。
步骤607,将第一节点组对待共识区块的共识结果作为待共识区块的共识结果,并将待共识区块的共识结果传送给第N级节点层中的任一节点。
具体实施中,若确定当前节点组为第一节点组,则第一节点组的主节点可以将第一节点组对待共识区块的共识结果作为待共识区块的共识结果,并可以将待共识区块的共识结果传送给第N级节点层中的任一节点;其中,第一节点组的主节点可以按照步骤602中传送待共识区块的两种方式传送待共识区块的共识结果,也可以按照其它方式传送待共识区块的共识结果,不作限定。
需要说明的是,若通过层级结果传送待共识区块的共识结果,则针对于任一级节点层中的任一节点组,该节点组中的每个节点在接收待共识区块的共识结果之前可以先对待共识区块的共识结果进行验证,若验证合法,则可以将待共识区块的共识结果同步给该节点在下一级节点层中所在的节点层中的任一节点,若验证不合法,则该节点可以不作任何处理。
相应地,若通过第一节点组的主节点直接发送待共识区块的共识结果给第N级节点层中的任一节点,则第N级节点层中的任一节点在接收待共识区块的共识结果之前可以先对待共识区块的共识结果进行验证,若验证合法,则可以接收待共识区块的共识结果,若验证不合法,则该节点可以不作任何处理。
步骤608,第N级节点层中的节点接收到待共识区块的共识结果后,使用待共识区块的共识结果更新预设数据库,该轮共识结束,启动下一轮共识。
本发明实施例中,第N级节点层中的任一节点接收到待共识区块的共识结果后,可以使用待共识区块的共识结果更新该节点内部的预设数据库,比如先解析待共识区块的共识结果得到待共识区块,再将待共识区块的区块头和区块体添加到预设数据库中,最后将待共识区块的区块头作为历史最大区块添加到内存缓存中。采用该种方式,相比于现有技术中每个节点根据自己的区块信息和其它节点的区块信息直接更新预设数据库来说,可以提高共识结果的准确性。
需要说明的是,本发明实施例中,步骤606至步骤608中待共识区块的共识结果均可以以commit包的形式存在。
本发明实施例中,针对于区块链系统中的任一共识节点,若该共识节点执行完步骤608,则确定本轮区块共识结束;如此,监控器若监控到本轮区块共识结束,且确定当前区块链系统中的节点不变,则可以从第N级节点层中每个节点组包括的各节点中选举出每个节点组在下一轮区块共识中的主节点,并可以使用第N-1级节点层中各节点组在下一轮区块共识中的主节点构成第N-1级节点层中的各节点组;若第N-1级节点层不为第一级节点层,则可以从第N-1级节点层中每个节点组包括的各节点中选举出每个节点组在下一轮区块共识中的主节点,并可以使用第N-1级节点层中各节点组在下一轮区块共识中的主节点构成第N-2级节点层中的各节点组,一直执行至第一级节点层为止。
本发明实施例中,设置第N级节点层中各节点组所包括的节点不变,在某一轮区块共识结束后,根据反向层级关系从下一级节点层的各个节点组中重新选取主节点组成上一级节点层中的各个节点组,可以保证不同轮区块共识中每级节点层的每个节点组中的主节点均不同,从而可以实现节点组中的各个节点轮换作主节点,保证区块链系统的运行顺序。
本发明的上述实施例中,区块链系统包括存在层级关系的N级节点层,每级节点层中包括至少一个节点组,每个节点组中包括一个主节点和至少一个从节点;同一级节点层中的任意两个节点组包括的节点不同,第i-1级节点层中的各节点为第i级节点层包括的各节点组中的主节点,第N级节点层中的各节点为区块链系统中全部的共识节点;针对第i级节点层中的每个节点组,该节点组的主节点根据该节点组中各节点对待共识区块的共识状态确定该节点组的共识结果,若i大于1,则在该主节点参与第i-1级节点层的共识时,将该节点组的共识结果作为该主节点对待共识区块的共识状态;若i等于1,则将该节点组的共识结果作为待共识区块的共识结果;其中,i、N为正整数,1≤i≤N。本发明实施例中,在大规模节点的区块链系统中,通过对区块链系统中的大规模节点进行分层分组,可以将大规模节点之间的共识过程转化为每个节点组内的少量节点之间的共识过程,从而极大地降低通信消耗,减小通信压力;且,每个节点只需在该节点所属的节点组中进行共识过程,从而只需等待本节点组中的其他节点发送的共识状态即可执行后续的共识过程,而无需像现有技术需要等待区块链系统中的全部节点发送的共识状态方可执行后续的共识过程,从而可以大大减少每个节点的共识过程所需的时间,使得区块链系统的共识效率得到较大提升。
需要说明的是,图6所示意的步骤编号仅为执行流程的一种示例,并不构成对各个步骤的执行先后顺序的限定。
针对上述方法流程,本发明实施例还提供一种基于区块链系统的共识装置,该装置的具体内容可以参照上述方法实施。
图7为本发明实施例提供的一种基于区块链系统的共识装置的结构示意图,所述区块链系统包括存在层级关系的N级节点层;其中,每级节点层中包括至少一个节点组,每个节点组中包括一个主节点和至少一个从节点;同一级节点层中的任意两个节点组包括的节点不同;第i-1级节点层中的各节点为第i级节点层包括的各节点组中的主节点;第N级节点层中的各节点为所述区块链系统中全部的共识节点;
针对所述第i级节点层中的每个节点组,所述节点组中的主节点包括:
确定模块701,用于根据所述节点组中各节点对待共识区块的共识状态确定所述节点组的共识结果;
处理模块702,用于若所述i大于1,则在所述主节点参与所述第i-1级节点层的共识时,将所述节点组的共识结果作为所述主节点对所述待共识区块的共识状态;若所述i等于1,则将所述第i级节点层中节点组的共识结果作为所述待共识区块的共识结果;
其中,i、N为正整数,1≤i≤N。
可选地,在所述i等于1时,所述装置还包括生成模块703和收发模块704;
所述生成模块703用于:生成所述待共识区块;
在所述确定模块701根据所述节点组中各节点对待共识区块的共识状态确定所述节点组的共识结果之前,所述收发模块704用于:将所述待共识区块发送给所述区块链系统中的任一共识节点或者按照所述层级关系将所述待共识区块发送给所述第N级节点层中的各节点;
在所述处理模块702将所述第i级节点层中节点组的共识结果作为所述待共识区块的共识结果,所述收发模块704还用于:将所述待共识区块的共识结果发送给所述区块链系统中的任一共识节点或者按照所述层级关系将所述待共识区块发送给所述第N级节点层中的各节点;
其中,所述按所述层级关系将所述待共识区块或所述待共识区块的共识结果发送给所述第N级节点层中的各节点,包括:
针对所述第i-1级节点层中的每个节点组,所述节点组的主节点将所述待共识区块或所述待共识区块的共识结果发送给所述节点组中的任一从节点;所述节点组中的任一节点将所述待共识区块或所述待共识区块的共识结果发送给第i级节点层中所述节点所在的节点组中的任一节点。
从上述内容可以看出:本发明的上述实施例中,区块链系统包括存在层级关系的N级节点层,每级节点层中包括至少一个节点组,每个节点组中包括一个主节点和至少一个从节点;同一级节点层中的任意两个节点组包括的节点不同,第i-1级节点层中的各节点为第i级节点层包括的各节点组中的主节点,第N级节点层中的各节点为区块链系统中全部的共识节点;针对第i级节点层中的每个节点组,该节点组的主节点根据该节点组中各节点对待共识区块的共识状态确定该节点组的共识结果,若i大于1,则在该主节点参与第i-1级节点层的共识时,将该节点组的共识结果作为该主节点对待共识区块的共识状态;若i等于1,则将该节点组的共识结果作为待共识区块的共识结果;其中,i、N为正整数,1≤i≤N。本发明实施例中,在大规模节点的区块链系统中,通过对区块链系统中的大规模节点进行分层分组,可以将大规模节点之间的共识过程转化为每个节点组内的少量节点之间的共识过程,从而极大地降低通信消耗,减小通信压力;且,每个节点只需在该节点所属的节点组中进行共识过程,从而只需等待本节点组中的其他节点发送的共识状态即可执行后续的共识过程,而无需像现有技术需要等待区块链系统中的全部节点发送的共识状态方可执行后续的共识过程,从而可以大大减少每个节点的共识过程所需的时间,使得区块链系统的共识效率得到较大提升。
基于同一发明构思,本发明实施例还提供一种计算设备,包括至少一个处理单元以及至少一个存储单元,其中,所述存储单元存储有计算机程序,当所述程序被所述处理单元执行时,使得所述处理单元执行上述图3至图6任意所述的基于区块链系统的共识方法。
基于同一发明构思,本发明实施例还提供一种计算机可读存储介质,其存储有可由计算设备执行的计算机程序,当所述程序在所述计算设备上运行时,使得所述计算设备执行上述图3至图6任意所述的基于区块链系统的共识方法。
本领域内的技术人员应明白,本发明的实施例可提供为方法、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
Claims (12)
1.一种基于区块链系统的共识方法,其特征在于,所述区块链系统包括存在层级关系的N级节点层;其中,每级节点层中包括至少一个节点组,每个节点组中包括一个主节点和至少一个从节点;同一级节点层中的任意两个节点组包括的节点不同;第i-1级节点层中的各节点为第i级节点层包括的各节点组中的主节点;第N级节点层中的各节点为所述区块链系统中全部的共识节点;
针对所述第i级节点层中的每个节点组,所述节点组的主节点根据所述节点组中各节点对待共识区块的共识状态确定所述节点组的共识结果;若所述i大于1,则在所述主节点参与所述第i-1级节点层的共识时,将所述节点组的共识结果作为所述主节点对所述待共识区块的共识状态;若所述i等于1,则将所述第i级节点层中节点组的共识结果作为所述待共识区块的共识结果;
其中,i、N为正整数,1≤i≤N。
2.根据权利要求1所述的方法,其特征在于,第1级节点层中的节点组为第一节点组;
在所述节点组的主节点根据所述节点组中各节点对待共识区块的共识状态确定所述节点组的共识结果之前,还包括:
所述第一节点组的主节点生成所述待共识区块,并将所述待共识区块发送给所述区块链系统中的任一共识节点;
所述将第1级节点层中节点组的共识结果作为所述待共识区块的共识结果之后,还包括:
所述第一节点组的主节点将所述待共识区块的共识结果发送给所述区块链系统中的任一共识节点。
3.根据权利要求1所述的方法,其特征在于,所述第1级节点层中的节点组为第一节点组;
在所述节点组的主节点根据所述节点组中各节点对待共识区块的共识状态确定所述节点组的共识结果之前,还包括:
所述第一节点组的主节点生成所述待共识区块,并按所述层级关系将所述待共识区块发送给所述第N级节点层中的各节点;
所述将第1级节点层中节点组的共识结果作为所述待共识区块的共识结果之后,还包括:
所述第一节点组的主节点按所述层级关系将所述待共识区块的共识结果发送给所述第N级节点层中的各节点;
其中,所述按所述层级关系将所述待共识区块或所述待共识区块的共识结果发送给所述第N级节点层中的各节点,包括:
针对所述第i-1级节点层中的每个节点组,所述节点组的主节点将所述待共识区块或所述待共识区块的共识结果发送给所述节点组中的任一从节点;所述节点组中的任一节点将所述待共识区块或所述待共识区块的共识结果发送给所述第i级节点层中所述节点所在的节点组中的任一节点。
4.根据权利要求2或3所述的方法,其特征在于,所述第一节点组的主节点将所述待共识区块发送给所述第N级节点层中的各节点后,还包括:
针对于所述第N级节点层中的每个节点组,所述节点组的任一节点处理所述待共识区块得到所述节点对所述待共识区块的区块信息,并将所述节点对所述待共识区块的区块信息发送给所述节点组中的其它节点;所述节点组的节点根据所述节点对所述待共识区块的区块信息与所述节点组中的其它节点对所述待共识区块的区块信息,确定所述节点对所述待共识区块的共识状态;
所述第一节点组的主节点将所述待共识区块的共识结果发送给所述第N级节点层中的各节点之后,还包括:
所述区块链系统中的任一共识节点根据所述待共识区块的共识结果更新所述共识节点内部的预设数据库。
5.根据权利要求4所述的方法,其特征在于,在所述区块链系统中的任一共识节点根据所述待共识区块的共识结果更新所述共识节点内部的预设数据库之后,还包括:
针对于所述第i级节点层中的每个节点组,从所述节点组包括的各节点中选举出所述节点组在下一轮区块共识中的主节点,以根据所述第N级节点层中各节点组在下一轮区块共识中的主节点构成所述第i-1级节点层中的各节点组。
6.一种基于区块链系统的共识装置,其特征在于,所述区块链系统包括存在层级关系的N级节点层;其中,每级节点层中包括至少一个节点组,每个节点组中包括一个主节点和至少一个从节点;同一级节点层中的任意两个节点组包括的节点不同;第i-1级节点层中的各节点为第i级节点层包括的各节点组中的主节点;第N级节点层中的各节点为所述区块链系统中全部的共识节点;
针对所述第i级节点层中的每个节点组,所述节点组中的主节点包括:
确定模块,用于根据所述节点组中各节点对待共识区块的共识状态确定所述节点组的共识结果;
处理模块,用于若所述i大于1,则在所述主节点参与所述第i-1级节点层的共识时,将所述节点组的共识结果作为所述主节点对所述待共识区块的共识状态;若所述i等于1,则将所述第i级节点层中节点组的共识结果作为所述待共识区块的共识结果;
其中,i、N为正整数,1≤i≤N。
7.根据权利要求6所述的装置,其特征在于,在所述i等于1时,所述装置还包括生成模块和收发模块;
所述生成模块用于:生成所述待共识区块;
在所述确定模块根据所述节点组中各节点对待共识区块的共识状态确定所述节点组的共识结果之前,所述收发模块用于:将所述待共识区块发送给所述区块链系统中的任一共识节点或者按照所述层级关系将所述待共识区块发送给所述第N级节点层中的各节点;
在所述处理模块将所述第i级节点层中节点组的共识结果作为所述待共识区块的共识结果,所述收发模块还用于:将所述待共识区块的共识结果发送给所述区块链系统中的任一共识节点或者按照所述层级关系将所述待共识区块发送给所述第N级节点层中的各节点;
其中,所述按所述层级关系将所述待共识区块或所述待共识区块的共识结果发送给所述第N级节点层中的各节点,包括:
针对所述第i-1级节点层中的每个节点组,所述节点组的主节点将所述待共识区块或所述待共识区块的共识结果发送给所述节点组中的任一从节点;所述节点组中的任一节点将所述待共识区块或所述待共识区块的共识结果发送给第i级节点层中所述节点所在的节点组中的任一节点。
8.一种区块链系统,其特征在于,所述区块链系统包括存在层级关系的N级节点层;其中,每级节点层中包括至少一个节点组,每个节点组中包括一个主节点和至少一个从节点;同一级节点层中的任意两个节点组包括的节点不同;第i-1级节点层中的各节点为第i级节点层包括的各节点组中的主节点;第N级节点层中的各节点为所述区块链系统中全部的共识节点;第一级节点层中的节点组为第一节点组;
所述第一节点组,用于生成待共识区块,并将所述待共识区块发送给所述第N级节点层中的各节点;
所述第N级节点层中的任一节点组,用于处理所述待共识区块,确定所述节点组中的每个节点对所述待共识区块的共识状态;
所述第i级节点层中的任一节点组,用于根据所述节点组中各节点对待共识区块的共识状态确定所述节点组的共识结果;若所述i大于1,则在所述节点组的主节点参与所述第i-1级节点层的共识时,将所述节点组的共识结果作为所述主节点对所述待共识区块的共识状态;若所述i等于1,则将所述第i级节点层中节点组的共识结果作为所述待共识区块的共识结果;
其中,i、N为正整数,1≤i≤N。
9.根据权利要求8所述的系统,其特征在于,所述第一节点组还用于:将所述待共识区块的共识结果发送给所述第N级节点层中的各节点;
所述第N级节点层还用于:根据所述待共识区块的共识结果更新所述第N级节点层的各节点内部的预设数据库。
10.根据权利要求9所述的系统,其特征在于,在所述i大于1时,所述第i级节点层中的任一节点组还用于:
从所述节点组包括的各节点中选举出所述节点组在下一轮区块共识中的主节点,以根据所述第N级节点层中各节点组在下一轮区块共识中的主节点构成所述第i-1级节点层中的各节点组。
11.一种计算设备,其特征在于,包括至少一个处理单元以及至少一个存储单元,其中,所述存储单元存储有计算机程序,当所述程序被所述处理单元执行时,使得所述处理单元执行权利要求1~5任一权利要求所述的方法。
12.一种计算机可读存储介质,其特征在于,其存储有可由计算设备执行的计算机程序,当所述程序在所述计算设备上运行时,使得所述计算设备执行权利要求1~5任一权利要求所述的方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910770124.0A CN110474986B (zh) | 2019-08-20 | 2019-08-20 | 一种基于区块链系统的共识方法、装置及系统 |
PCT/CN2020/110108 WO2021032138A1 (zh) | 2019-08-20 | 2020-08-19 | 一种基于区块链系统的共识方法、装置及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910770124.0A CN110474986B (zh) | 2019-08-20 | 2019-08-20 | 一种基于区块链系统的共识方法、装置及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110474986A true CN110474986A (zh) | 2019-11-19 |
CN110474986B CN110474986B (zh) | 2022-08-12 |
Family
ID=68512928
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910770124.0A Active CN110474986B (zh) | 2019-08-20 | 2019-08-20 | 一种基于区块链系统的共识方法、装置及系统 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN110474986B (zh) |
WO (1) | WO2021032138A1 (zh) |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110912994A (zh) * | 2019-11-22 | 2020-03-24 | 中国联合网络通信集团有限公司 | 一种区块链共识方法及装置 |
CN111046110A (zh) * | 2020-03-16 | 2020-04-21 | 支付宝(杭州)信息技术有限公司 | 用于区块链系统的节点管理的方法、节点和计算设备 |
CN111339187A (zh) * | 2020-02-20 | 2020-06-26 | 百度在线网络技术(北京)有限公司 | 基于智能合约的数据处理方法、装置、设备和存储介质 |
CN111524011A (zh) * | 2020-05-06 | 2020-08-11 | 杭州复杂美科技有限公司 | 平行链共识确认方法、设备和存储介质 |
CN111711526A (zh) * | 2020-06-16 | 2020-09-25 | 深圳前海微众银行股份有限公司 | 一种区块链节点的共识方法及系统 |
CN111786818A (zh) * | 2020-06-16 | 2020-10-16 | 杭州溪塔科技有限公司 | 一种区块链共识节点状态监控方法和装置 |
WO2021032138A1 (zh) * | 2019-08-20 | 2021-02-25 | 深圳前海微众银行股份有限公司 | 一种基于区块链系统的共识方法、装置及系统 |
CN112434311A (zh) * | 2020-11-05 | 2021-03-02 | 德州职业技术学院(德州市技师学院) | 一种区块链数据加密共享方法和系统 |
CN113347174A (zh) * | 2021-05-31 | 2021-09-03 | 矩阵元技术(深圳)有限公司 | 区块链中的共识方法、装置和电子设备 |
CN113505155A (zh) * | 2021-07-06 | 2021-10-15 | 中国联合网络通信集团有限公司 | 基于区块链网络的交易信息检索方法和检索装置 |
CN114513525A (zh) * | 2022-04-19 | 2022-05-17 | 北京易鲸捷信息技术有限公司 | 采用跨机房链式转发的数据一致性优化方法及系统 |
WO2023045972A1 (zh) * | 2021-09-27 | 2023-03-30 | 深圳前海微众银行股份有限公司 | 一种区块链系统的共识方法及装置 |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113254272B (zh) * | 2021-06-09 | 2022-09-13 | 腾讯科技(深圳)有限公司 | 区块链网络的数据处理方法、装置、计算机设备和介质 |
CN113676355B (zh) * | 2021-08-27 | 2024-04-23 | 浙商银行股份有限公司 | 一种区块链多层级组网方法、设备及存储介质 |
CN114338040B (zh) * | 2021-12-29 | 2024-03-08 | 大连理工江苏研究院有限公司 | 一种区块链节点的分组多链三次共识方法 |
CN114363084B (zh) * | 2022-01-13 | 2023-01-24 | 西南林业大学 | 一种基于区块链的跨境贸易数据可信存储方法 |
CN115314369A (zh) * | 2022-10-12 | 2022-11-08 | 中国信息通信研究院 | 区块链节点共识的方法和装置、设备和介质 |
CN115473908B (zh) * | 2022-11-03 | 2023-04-28 | 山东区块链研究院 | 一种区块链节点故障恢复方法及区块链系统 |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107147735A (zh) * | 2017-05-12 | 2017-09-08 | 北京博晨技术有限公司 | 一种基于分层结构的分布式账本系统 |
US20170323392A1 (en) * | 2016-05-05 | 2017-11-09 | Lance Kasper | Consensus system for manipulation resistant digital record keeping |
CN109246194A (zh) * | 2018-08-13 | 2019-01-18 | 佛山市顺德区中山大学研究院 | 基于多领导节点的实用拜占庭容错区块链共识方法及系统 |
CN109327548A (zh) * | 2018-11-27 | 2019-02-12 | 北京瑞卓喜投科技发展有限公司 | 一种区块链更新方法及区块链更新系统 |
CN109462587A (zh) * | 2018-11-09 | 2019-03-12 | 四川虹微技术有限公司 | 区块链分层共识方法、区块链网络系统及区块链节点 |
CN109547211A (zh) * | 2018-11-29 | 2019-03-29 | 浙江大学 | 应用数字签名技术的分级并发拜占庭共识方法及系统 |
CN109547527A (zh) * | 2018-10-12 | 2019-03-29 | 广西师范大学 | 区块链中基于信誉机制的分区快速共识方法 |
CN109819003A (zh) * | 2017-11-22 | 2019-05-28 | 南京理工大学 | 一种区块链的分层共识方法和系统 |
US20190173666A1 (en) * | 2017-12-01 | 2019-06-06 | International Business Machines Corporation | Hierarchical blockchain consensus optimazation scheme |
CN110113388A (zh) * | 2019-04-17 | 2019-08-09 | 四川大学 | 一种基于改进型聚类算法的区块链系统共识的方法和装置 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108182635A (zh) * | 2017-12-18 | 2018-06-19 | 深圳前海微众银行股份有限公司 | 区块链共识方法、系统和计算机可读存储介质 |
CN110474986B (zh) * | 2019-08-20 | 2022-08-12 | 深圳前海微众银行股份有限公司 | 一种基于区块链系统的共识方法、装置及系统 |
-
2019
- 2019-08-20 CN CN201910770124.0A patent/CN110474986B/zh active Active
-
2020
- 2020-08-19 WO PCT/CN2020/110108 patent/WO2021032138A1/zh active Application Filing
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20170323392A1 (en) * | 2016-05-05 | 2017-11-09 | Lance Kasper | Consensus system for manipulation resistant digital record keeping |
CN107147735A (zh) * | 2017-05-12 | 2017-09-08 | 北京博晨技术有限公司 | 一种基于分层结构的分布式账本系统 |
CN109819003A (zh) * | 2017-11-22 | 2019-05-28 | 南京理工大学 | 一种区块链的分层共识方法和系统 |
US20190173666A1 (en) * | 2017-12-01 | 2019-06-06 | International Business Machines Corporation | Hierarchical blockchain consensus optimazation scheme |
CN109246194A (zh) * | 2018-08-13 | 2019-01-18 | 佛山市顺德区中山大学研究院 | 基于多领导节点的实用拜占庭容错区块链共识方法及系统 |
CN109547527A (zh) * | 2018-10-12 | 2019-03-29 | 广西师范大学 | 区块链中基于信誉机制的分区快速共识方法 |
CN109462587A (zh) * | 2018-11-09 | 2019-03-12 | 四川虹微技术有限公司 | 区块链分层共识方法、区块链网络系统及区块链节点 |
CN109327548A (zh) * | 2018-11-27 | 2019-02-12 | 北京瑞卓喜投科技发展有限公司 | 一种区块链更新方法及区块链更新系统 |
CN109547211A (zh) * | 2018-11-29 | 2019-03-29 | 浙江大学 | 应用数字签名技术的分级并发拜占庭共识方法及系统 |
CN110113388A (zh) * | 2019-04-17 | 2019-08-09 | 四川大学 | 一种基于改进型聚类算法的区块链系统共识的方法和装置 |
Cited By (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2021032138A1 (zh) * | 2019-08-20 | 2021-02-25 | 深圳前海微众银行股份有限公司 | 一种基于区块链系统的共识方法、装置及系统 |
CN110912994A (zh) * | 2019-11-22 | 2020-03-24 | 中国联合网络通信集团有限公司 | 一种区块链共识方法及装置 |
CN110912994B (zh) * | 2019-11-22 | 2022-02-11 | 中国联合网络通信集团有限公司 | 一种区块链共识方法及装置 |
CN111339187A (zh) * | 2020-02-20 | 2020-06-26 | 百度在线网络技术(北京)有限公司 | 基于智能合约的数据处理方法、装置、设备和存储介质 |
CN111339187B (zh) * | 2020-02-20 | 2023-05-09 | 百度在线网络技术(北京)有限公司 | 基于智能合约的数据处理方法、装置、设备和存储介质 |
CN111046110A (zh) * | 2020-03-16 | 2020-04-21 | 支付宝(杭州)信息技术有限公司 | 用于区块链系统的节点管理的方法、节点和计算设备 |
CN111524011A (zh) * | 2020-05-06 | 2020-08-11 | 杭州复杂美科技有限公司 | 平行链共识确认方法、设备和存储介质 |
CN111786818B (zh) * | 2020-06-16 | 2023-04-18 | 杭州溪塔科技有限公司 | 一种区块链共识节点状态监控方法和装置 |
CN111711526A (zh) * | 2020-06-16 | 2020-09-25 | 深圳前海微众银行股份有限公司 | 一种区块链节点的共识方法及系统 |
CN111786818A (zh) * | 2020-06-16 | 2020-10-16 | 杭州溪塔科技有限公司 | 一种区块链共识节点状态监控方法和装置 |
CN111711526B (zh) * | 2020-06-16 | 2024-03-26 | 深圳前海微众银行股份有限公司 | 一种区块链节点的共识方法及系统 |
CN112434311A (zh) * | 2020-11-05 | 2021-03-02 | 德州职业技术学院(德州市技师学院) | 一种区块链数据加密共享方法和系统 |
CN113347174A (zh) * | 2021-05-31 | 2021-09-03 | 矩阵元技术(深圳)有限公司 | 区块链中的共识方法、装置和电子设备 |
CN113505155B (zh) * | 2021-07-06 | 2023-05-12 | 中国联合网络通信集团有限公司 | 基于区块链网络的交易信息检索方法和检索装置 |
CN113505155A (zh) * | 2021-07-06 | 2021-10-15 | 中国联合网络通信集团有限公司 | 基于区块链网络的交易信息检索方法和检索装置 |
WO2023045972A1 (zh) * | 2021-09-27 | 2023-03-30 | 深圳前海微众银行股份有限公司 | 一种区块链系统的共识方法及装置 |
CN114513525A (zh) * | 2022-04-19 | 2022-05-17 | 北京易鲸捷信息技术有限公司 | 采用跨机房链式转发的数据一致性优化方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN110474986B (zh) | 2022-08-12 |
WO2021032138A1 (zh) | 2021-02-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110474986A (zh) | 一种基于区块链系统的共识方法、装置及系统 | |
CN110517141A (zh) | 一种基于区块链系统的共识方法及装置 | |
CN110113388B (zh) | 一种基于改进型聚类算法的区块链系统共识的方法和装置 | |
CN110503558B (zh) | 一种基于区块链系统的处理方法及装置 | |
US10382388B2 (en) | Determining consensus in a decentralized domain name system | |
KR101727525B1 (ko) | 블록체인 기반 분산 저장 방법 및 이를 이용한 장치 | |
CN109995850A (zh) | 一种区块链系统及区块链系统的交易处理方法 | |
CN111611315B (zh) | 面向金融大数据的多叉树结构区块链集成优化存储方法 | |
WO2019019056A1 (zh) | 前置机参与区块链共识的方法 | |
CN112104482B (zh) | 一种基于并行投票的共识方法 | |
CN110070445A (zh) | 一种基于区块链系统的交易处理方法及装置 | |
CN109949160A (zh) | 一种区块链的分片方法及装置 | |
CN110287205A (zh) | 一种区块链跨分片交易数据处理方法及装置 | |
CN111698094A (zh) | 一种基于区块链系统的共识方法及区块链系统 | |
CN113052329B (zh) | 联合更新业务模型的方法及装置 | |
CN112348518B (zh) | 一种区块链交易证明的方法及装置 | |
CN109961364A (zh) | 一种基于有向无环图的交易方法及系统 | |
CN114663104A (zh) | 基于区块链产品供应链溯源的pbft | |
CN113645278B (zh) | 一种区块链的跨链消息传输方法、设备、存储介质 | |
CN114090376A (zh) | 一种基于联盟链系统的业务处理方法及装置 | |
CN112801791A (zh) | 一种基于授权的区块链共识方法及系统 | |
CN115065689B (zh) | 一种基于历史评价的联盟链区块数据存储方法及系统 | |
CN106878356A (zh) | 一种调度方法及计算节点 | |
CN109040075A (zh) | 无线移动传感器网络中节点的管理方法、服务器和系统 | |
KR102315226B1 (ko) | 규칙 증명 방식의 합의 알고리즘 기반 블록체인 시스템 및 그 방법 |
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 |