CN111698094A - 一种基于区块链系统的共识方法及区块链系统 - Google Patents
一种基于区块链系统的共识方法及区块链系统 Download PDFInfo
- Publication number
- CN111698094A CN111698094A CN202010534725.4A CN202010534725A CN111698094A CN 111698094 A CN111698094 A CN 111698094A CN 202010534725 A CN202010534725 A CN 202010534725A CN 111698094 A CN111698094 A CN 111698094A
- Authority
- CN
- China
- Prior art keywords
- consensus
- node
- block
- group
- common
- 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
Images
Classifications
-
- 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/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3247—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
-
- 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
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3236—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Theoretical Computer Science (AREA)
- Business, Economics & Management (AREA)
- Signal Processing (AREA)
- Databases & Information Systems (AREA)
- Computer Networks & Wireless Communication (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Accounting & Taxation (AREA)
- Finance (AREA)
- General Engineering & Computer Science (AREA)
- Economics (AREA)
- Marketing (AREA)
- Strategic Management (AREA)
- Technology Law (AREA)
- General Business, Economics & Management (AREA)
- Development Economics (AREA)
- Data Mining & Analysis (AREA)
- Computing Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)
Abstract
本发明实施例提供的一种基于区块链系统的共识方法及区块链系统,涉及金融科技技术领域,该方法包括:区块链系统包括N个共识节点组,第L个共识节点组中的每个共识节点对待共识区块进行共识验证,获得组内共识结果,并将组内共识结果发送给N‑1个其他共识节点组的共识节点,其中,L、N为正整数。第L个共共识节点组中的每个共识节点根据接收的其他共识节点组的组内共识结果,确定待共识区块的共识结果。通过对区块链系统中的节点进行分组,可以将节点之间的共识过程转化为每个共识节点组内的少量共识节点之间的共识过程,从而极大地降低了共识复杂度,减小通信压力,增大了联盟链的节点规模。
Description
技术领域
本发明实施例涉及金融科技(Fintech)技术领域,尤其涉及一种基于区块链系统的共识方法及区块链系统。
背景技术
随着计算机技术的发展,越来越多的技术应用在金融领域,传统金融业正在逐步向金融科技(Fintech)转变,区块链技术也不例外,但由于金融行业的安全性、实时性要求,也对技术提出的更高的要求。在区块链系统中,为了保证交易执行的准确性,通常需要使用多个节点对区块进行共识,若对区块达成共识的节点数量超过预设数量,则说明区块链系统中大多数的节点处理交易所得到的区块是一致的;如此,该区块可以成功出块,且节点也可以根据该区块更新内部的交易数据库。
目前,区块链系统共识算法主要基于博弈论和分布式一致性原理,前者包括工作量证明(Proof Of Work,简称POW)、股权证明(Proof of Stake,POS),后者包括实用拜占庭容错算法(Practical Byzantine Fault Tolerance,PBFT)、Raft等共识算法。PBFT吞吐量高、不耗电、有最终一致性保证,性能可达到联盟链场景需求,但是在PBFT共识算法中,由于每个节点均需要与区块链系统中除该节点以外的全部节点进行通信共识,因此PBFT共识算法网络复杂度高(与节点数目的平方成正比)。为了避免区块链系统中的节点长时间内处于等待状态,区块链系统中不能设置过多的节点,从而限制了联盟链的节点规模。
发明内容
本发明实施例提供的一种基于区块链系统的共识方法及区块链系统,用以解决PBFT共识算法中因网络复杂度限制联盟链的节点规模的技术问题。
一方面,本发明实施提供了一种基于区块链系统的共识方法,所述区块链系统包括N个共识节点组,包括:
第L个共识节点组中的每个共识节点对待共识区块进行共识验证,获得组内共识结果,并将所述组内共识结果发送给N-1个其他共识节点组的共识节点,其中,N为正整数;
所述第L个共识节点组中的每个共识节点根据接收的其他共识节点组的组内共识结果,确定所述待共识区块的共识结果。
通过对区块链系统中的节点进行分组,可以将节点之间的共识过程转化为每个共识节点组内的少量共识节点之间的共识过程,从而极大地降低了共识复杂度,减小通信压力,增大了联盟链的节点规模。
可选地,所述第L个共识节点组中的每个共识节点对待共识区块进行共识验证,获得组内共识结果,并将所述组内共识结果发送给N-1个其他共识节点组的共识节点,包括:
所述第L个共识节点组中的第k个共识节点执行所述待共识区块中的交易数据,获得所述待共识区块的执行结果,并根据所述待共识区块的执行结果生成第一签名消息包;
所述第L个共识节点组中的第k个共识节点将所述第一签名消息包发送给所述第L个共识节点组中的其他共识节点;
所述第L个共识节点组中的第k个共识节点在确定接收的第一签名消息包的数量大于或等于第一阈值时,根据所述待共识区块的执行结果生成第二签名消息包,并将所述第二签名消息包发送给N-1个其他共识节点组的共识节点。
可选地,所述第L个共识节点组中的每个共识节点根据接收的其他共识节点组的组内共识结果,确定所述待共识区块的共识结果,包括:
所述第L个共识节点组中的第k个共识节点在确定接收的其他共识节点组发送的第二签名消息包的数量大于或等于第二阈值时,生成第一确认包,并将所述第一确认包发送给所述第L个共识节点组中的其他共识节点;
所述第L个共识节点组中的第k个共识节点在确定接收的第一确认包的数量大于或等于第一阈值时,生成第二确认包,并将所述第二确认包发送给N-1个其他共识节点组的共识节点;
所述第L个共识节点组中的第k个共识节点在确定接收的其他共识节点组发送的第二确认包的数量大于或等于第二阈值时,确定所述待共识区块的共识结果并根据所述待共识区块的共识结果更新所述第L个共识节点组中的第k个共识节点内部的预设数据库。
可选地,所述第L个共识节点组中的每个共识节点根据接收的其他共识节点组的组内共识结果,确定所述待共识区块的共识结果,包括:
所述第L个共识节点组中的第k个共识节点在确定接收的其他共识节点组发送的第二签名消息包的数量大于或等于第二阈值时,生成确认包,并将所述确认包发送给所述第L个共识节点组中的其他共识节点;
所述第L个共识节点组中的第k个共识节点在确定接收的确认包的数量大于或等于第一阈值时,确定所述待共识区块的共识结果并根据所述待共识区块的共识结果更新所述第L个共识节点组中的第k个共识节点内部的预设数据库。
可选地,所述第L个共识节点组中的每个共识节点对待共识区块进行共识验证,获得组内共识结果,并将所述组内共识结果发送给N-1个其他共识节点组的共识节点,包括:
所述第L个共识节点组中的第k个共识节点执行所述待共识区块中的交易数据,获得所述待共识区块的执行结果,并根据所述待共识区块的执行结果生成签名消息包;
所述第L个共识节点组中的第k个共识节点将所述签名消息包发送给所述第L个共识节点组中的其他共识节点;
所述第L个共识节点组中的第k个共识节点在确定接收的签名消息包的数量大于或等于第一阈值时,生成第一确认包,并将所述第一确认包发送给所述第L个共识节点组中的其他共识节点;
所述第L个共识节点组中的第k个共识节点在确定接收的第一确认包的数量大于或等于第一阈值时,生成第二确认包,并将所述第二确认包发送给N-1个其他共识节点组的共识节点。
可选地,所述第L个共识节点组中的每个共识节点根据接收的其他共识节点组的组内共识结果,确定所述待共识区块的共识结果,包括:
所述第L个共识节点组中的第k个共识节点在确定接收的其他共识节点组发送的第二确认包的数量大于或等于第二阈值时,确定所述待共识区块的共识结果并根据所述待共识区块的共识结果更新所述第L个共识节点组中的第k个共识节点内部的预设数据库。
可选地,所述N个共识节点组中包括一个委员会组和N-1个副本组,所述委员会组中包括一个主节点和至少一个从节点;
所述第L个共识节点组中的每个共识节点对待共识区块进行共识验证,获得组内共识结果之前,还包括:
所述委员会组中的主节点生成待共识区块并将所述待共识区块发送给所述委员会组中的从节点;
所述委员会组中的从节点将接收的所述待共识区块发送给所述N-1个副本组中的共识节点。
从多个共识节点组中选出委员会组,由委员会组中的主节点生成待共识区块并发送给委员会组内的其他从节点,然后由从节点广播给其他副本组中的共识节点,相较于主节点向区块链系统中除主节点以外的所有共识节点广播待共识区块来说,一方面实现了共识节点的流量负载均衡,另一方面降低了通信开销。
可选地,所述委员会组是根据区块链上最高区块的块高,从所述N个共识节点组中确定的;
所述委员会组中的主节点是根据区块链上最高区块的块高,从所述委员会组中的各个共识节点中确定的。
基于区块链中最高区块的块高周期性选举委员会组以及主节点,防止共识节点作恶,提高了区块链系统的安全性。
可选地,所述N个共识节点组是将M个共识节点随机划分后获得的,且所述N个共识节点组中的共识节点周期性更新,M为大于N的正整数。
通过周期性运行随机分组算法,生成新的共识节点组,防止部分共识节点联合作恶,提高了区块链系统的安全性。
一方面,本发明实施提供了一种区块链系统,所述区块链系统包括N个共识节点组,其中,第L个共识节点组中的第k个共识节点包括:
验证模块,用于对待共识区块进行共识验证,获得组内共识结果,并将所述组内共识结果发送给N-1个其他共识节点组的共识节点,其中,N为正整数;
处理模块,用于根据接收的其他共识节点组的组内共识结果,确定所述待共识区块的共识结果。
可选地,所述验证模块具体用于:
执行所述待共识区块中的交易数据,获得所述待共识区块的执行结果,并根据所述待共识区块的执行结果生成第一签名消息包;
将所述第一签名消息包发送给所述第L个共识节点组中的其他共识节点;
在确定接收的第一签名消息包的数量大于或等于第一阈值时,根据所述待共识区块的执行结果生成第二签名消息包,并将所述第二签名消息包发送给N-1个其他共识节点组的共识节点。
可选地,所述处理模块具体用于:
在确定接收的其他共识节点组发送的第二签名消息包的数量大于或等于第二阈值时,生成第一确认包,并将所述第一确认包发送给所述第L个共识节点组中的其他共识节点;
在确定接收的第一确认包的数量大于或等于第一阈值时,生成第二确认包,并将所述第二确认包发送给N-1个其他共识节点组的共识节点;
在确定接收的其他共识节点组发送的第二确认包的数量大于或等于第二阈值时,确定所述待共识区块的共识结果并根据所述待共识区块的共识结果更新所述第L个共识节点组中的第k个共识节点内部的预设数据库。
可选地,所述处理模块具体用于:
在确定接收的其他共识节点组发送的第二签名消息包的数量大于或等于第二阈值时,生成确认包,并将所述确认包发送给所述第L个共识节点组中的其他共识节点;
在确定接收的确认包的数量大于或等于第一阈值时,确定所述待共识区块的共识结果并根据所述待共识区块的共识结果更新所述第L个共识节点组中的第k个共识节点内部的预设数据库。
可选地,所述验证模块具体用于:
执行所述待共识区块中的交易数据,获得所述待共识区块的执行结果,并根据所述待共识区块的执行结果生成签名消息包;
将所述签名消息包发送给所述第L个共识节点组中的其他共识节点;
在确定接收的签名消息包的数量大于或等于第一阈值时,生成第一确认包,并将所述第一确认包发送给所述第L个共识节点组中的其他共识节点;
在确定接收的第一确认包的数量大于或等于第一阈值时,生成第二确认包,并将所述第二确认包发送给N-1个其他共识节点组的共识节点。
可选地,所述处理模块具体用于:
在确定接收的其他共识节点组发送的第二确认包的数量大于或等于第二阈值时,确定所述待共识区块的共识结果并根据所述待共识区块的共识结果更新所述第L个共识节点组中的第k个共识节点内部的预设数据库。
可选地,所述N个共识节点组中包括一个委员会组和N-1个副本组,所述委员会组中包括一个主节点和至少一个从节点;
所述验证模块还用于:
对待共识区块进行共识验证,获得组内共识结果之前,生成待共识区块并将所述待共识区块发送给所述委员会组中的从节点;
将接收的所述待共识区块发送给所述N-1个副本组中的共识节点。
可选地,所述委员会组是根据区块链上最高区块的块高,从所述N个共识节点组中确定的;
所述委员会组中的主节点是根据区块链上最高区块的块高,从所述委员会组中的各个共识节点中确定的。
可选地,所述N个共识节点组是将M个共识节点随机划分后获得的,且所述N个共识节点组中的共识节点周期性更新,M为大于N的正整数。
一方面,本发明实施提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现基于区块链系统的共识方法的步骤。
一方面,本发明实施提供了一种计算机可读存储介质,其存储有可由计算机设备执行的计算机程序,当所述程序在计算机设备上运行时,使得所述计算机设备执行基于区块链系统的共识方法的步骤。
本发明实施例中,通过对区块链系统中的节点进行分组,可以将节点之间的共识过程转化为每个共识节点组内的少量共识节点之间的共识过程,从而极大地降低了共识复杂度,减小通信压力,增大了联盟链的节点规模;且,每个共识节点在该共识节点所属的共识节点组中进行共识时,只需等待本共识节点组中的其他共识节点发送的共识状态即可执行后续的共识过程,而无需像现有技术需要等待区块链系统中的全部共识节点发送的共识状态方可执行后续的共识过程,从而可以大大减少每个共识节点的共识过程所需的时间,使得区块链系统的共识效率得到较大提升。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简要介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种系统架构示意图;
图2为本发明实施例提供的PBFT共识算法的流程示意图;
图3为本发明实施例提供的一种基于区块链系统的区块共识方法的流程示意图;
图4为本发明实施例提供的一种发送Prepare包的流程示意图;
图5为本发明实施例提供的一种发送SignReq包的流程示意图;
图6为本发明实施例提供的一种发送SuperSign包的流程示意图;
图7为本发明实施例提供的一种发送SuperSign包的流程示意图;
图8为本发明实施例提供的一种发送CommitReq包的流程示意图;
图9为本发明实施例提供的一种发送SuperCommit的流程示意图;
图10为本发明实施例提供的一种发送SuperCommit的流程示意图;
图11为本发明实施例提供的一种发送SignReq包的流程示意图;
图12为本发明实施例提供的一种发送CommitReq包的流程示意图;
图13为本发明实施例提供的一种发送SuperCommit的流程示意图;
图14为本发明实施例提供的一种发送SuperCommit的流程示意图;
图15为本发明实施例提供的一种共识节点的结构示意图;
图16为本发明实施例提供的一种计算机设备的结构示意图。
具体实施方式
为了使本发明的目的、技术方案及有益效果更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
为了方便理解,下面对本发明实施例中涉及的名词进行解释。
金融科技(Fintech)技术领域通常涉及到多种交易,比如,银行的交易可以包括售卡交易、存款交易、贷款交易、保险交易、理财交易等,银行每天的交易量可以达到数千笔甚至数万笔。随着区块链技术的逐步发展,金融科技领域也可以使用区块链技术来处理交易,举例来说,若多家银行之间涉及到相关交易,则可以通过设置联盟链来同步处理相关交易,或者还可以将法院、客户等同时上链,共同维护联盟链的安全和稳定。
区块链系统可以是由多个节点组成的点对点(Peer To Peer,P2P)网络。P2P是一种运行在传输控制协议(Transmission Control Protocol,TCP)协议之上的应用层协议,在区块链系统中的节点可以彼此对等,系统中不存在中心节点,因此每个节点都可以随机地连接其它节点。在区块链系统中,每个节点内部都可以设置有预设数据库,各个节点通过预设数据库共同维护区块链系统中的公共账本,节点内部的预设数据库可以存储区块链系统中的区块数据;其中,区块数据包括区块头和区块体,区块头包括上一区块的哈希值、本区块的哈希值、本区块的块高、时间戳等信息,区块体包括交易数据,比如区块链系统中的节点对该区块进行共识的过程中待处理的交易数据以及处理待处理的交易数据得到的交易结果。
PBFT共识算法:可以在少数节点作恶(如伪造消息)场景中达成共识,它采用签名、签名验证、哈希等密码学算法确保消息传递过程中的防篡改性、防伪造性、不可抵赖性,并优化了前人工作,将拜占庭容错算法复杂度从指数级降低到多项式级别,在一个由(3×f+1)个节点构成的系统中,只要有不少于(2×f+1)非恶意节点正常工作,该系统就能达成一致性,如:7个节点的系统中允许2个节点出现拜占庭错误。
共识节点组:参与共识的若干个共识节点组成的共识节点集合。
委员会组更新周期:被选举为委员会组的共识节点组共识R个区块后,选举新的委员会组。
图1为本发明实施例提供的一种区块链系统的架构示意图,如图1所示,区块链系统中可以包括N个共识节点组,分别为共识节点组1至共识节点组N,每个共识节点组中包括n个共识节点,其中,共识节点组i中的共识节点为共识节点i(1)至共识节点i(n)。区块链系统中任意两个共识节点可以通信连接,从而共同维护区块链系统。其中,任意两个共识节点可以通过有线方式连接,或者也可以通过无线方式连接,具体不作限定。
本发明实施例中,区块链系统中的共识节点可以具有多种功能,比如,路由功能、交易功能、区块链功能和共识功能等。具体地说,区块链系统中的共识节点可以把其他共识节点传送过来的交易数据等信息传送给更多的节点以实现节点之间的通信;或者,区块链系统中的共识节点可以用于支持用户进行交易;或者,区块链系统中的共识节点可以用于记录历史上的所有交易;或者,区块链系统中的共识节点可以通过验证和记录交易生成区块链中的新区块。实际应用中,路由功能是区块链系统中的每个共识节点必须具有的功能,而其它功能可由本领域技术人员根据实际需要进行设置。
需要说明的是,区块链系统中的一个共识节点可以在一台物理机(服务器)上,且一个共识节点具体可以是指服务器中运行的一个进程或者一系列进程。比如,共识节点组i中的共识节点i(1)可以为一个服务器上运行的一个进程,或者也可以为是指服务器,具体不作限定。
如图1所示,该系统架构中还可以包括客户端设备200,客户端设备200可以通过接入区块链网络与区块链系统中的任一共识节点连接。具体实施中,客户端设备200可以将交易发送给区块链系统中的任一共识节点,区块链系统中的某一共识节点在接收到交易后,可以将交易同步给区块链系统中的其它共识节点。该共识节点在同步交易后,还可以将交易存储在节点内部的交易池中;相应地,其它共识节点在接收到该节点同步的交易后,也可以将交易存储在其它共识节点内部的交易池中。如此,若某一共识节点确定处理多条交易,则可以从内部的交易池中获取多条交易,进而进行后续的交易处理及区块共识。
其中,交易可以以栈的形式存储在交易池中;如此,若某一共识节点确定处理多条交易,则可以从内部的交易池中获取最早入栈的多条交易进行后续的处理及共识过程。
下面介绍使用PBFT共识算法处理交易时对应的流程示意图,如图2所示,设定区块链系统中包括共识节点101、共识节点102、共识节点103,共识节点104。
PBFT共识算法处理交易的过程可以分为三个阶段:pre-prepare阶段、prepare阶段和commit阶段。下面分别描述着三个阶段的具体实现过程。
pre-prepare阶段
在pre-prepare阶段中,若某一轮区块共识的主节点为共识节点101,且共识节点101的内存中存储的最高区块为区块1,则主节点101可以从主节点101的交易池中获取该轮区块共识待处理的交易数据,并根据该轮区块共识待处理的交易数据打包区块2,生成prepare包。进一步地,主节点101可以将prepare包发送给区块链系统中的任一共识节点,即共识节点102、共识节点103和共识节点104。至此,pre-prepare阶段执行结束。
显然地,在pre-prepare阶段中,主节点需要向区块链系统中除主节点以外的所有共识节点发送prepare包,因此pre-prepare阶段对应的通信开销为(M-1),即O(M)。
prepare阶段
在prepare阶段中,区块链系统中的任一共识节点接收到主节点101发送的prepare包后,均可以解析prepare包得到该轮区块共识待处理的交易数据;如此,该共识节点可以执行该轮区块共识待处理的交易数据得到交易结果。根据交易结果生成该共识节点的签名消息包,进而可以将该共识节点的签名消息包发送给区块链系统中的其它共识节点,至此,prepare阶段执行结束。
显然地,在prepare阶段中,每个共识节点均需要向区块链系统中除该共识节点以外的所有共识节点发送签名消息包,因此prepare阶段对应的通信开销为M*(M-1),即O(M2)。
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阶段对应的通信开销为M*(M-1),即O(M2)。
根据上述三个阶段的内容可知,PBFT共识算法在处理交易时,所需的通信开销为(M-1)+2M*(M-1),即O(M2)。采用该种方式,若区块链系统为节点的区块链系统,比如节点数量为1000,则其通信开销达到了106,该通信开销非常巨大,导致区块链系统的通信压力较大。为了避免区块链系统中的节点长时间内处于等待状态,区块链系统中不能设置过多的节点,从而限制了联盟链的节点规模。
基于此,本发明实施例提供了一种基于区块链系统的共识方法,该方法可以由区块链系统执行,区块链系统包括N个共识节点组,如图3所示,包括:
步骤S301,第L个共识节点组中的每个共识节点对待共识区块进行共识验证,获得组内共识结果,并将组内共识结果发送给N-1个其他共识节点组的共识节点。
上述区块链系统中的N个共识节点组是将M个共识节点随机划分后获得的,其中,M、N为正整数,N≤M,第L个共识节点组为N个共识节点组中任意一个共识节点组,L为正整数。
具体实施中,每个共识节点均运行随机分组算法,并产生一致的分组结果。随机分组算法是基于Fisher–Yates shuffle洗牌算法打乱共识节点顺序,并基于打乱顺序后的共识节点列表划分分组。
示例性地,设定每个共识节点组中的共识节点数量为n,即:n=M/N,共识节点列表中包括M个排好序的共识节点,采用随机分组算法将排好序的共识节点列表随机打乱顺序,然后按照打乱后的顺序,每次取n个共识节点组成一个共识节点组,第i个共识节点组的共识节点集合为打乱顺序后的共识节点列表中第n*i到第(i+1)*n个共识节点。
为了保障区块链系统的安全性,N个共识节点组中的共识节点周期性更新。比如,区块链系统每共识R个区块后,每个共识节点重新运行一次随机分组算法,生成新的打乱顺序后的共识节点列表,然后再基于更新的共识节点列表获得N个共识节点组。通过周期性运行随机分组算法,生成新的共识节点组,防止部分共识节点联合作恶,提高了区块链系统的安全性。
步骤S302,第L个共识节点组中的每个共识节点根据接收的其他共识节点组的组内共识结果,确定待共识区块的共识结果。
本发明实施例中,通过对区块链系统中的节点进行分组,可以将节点之间的共识过程转化为每个节点组内的少量共识节点之间的共识过程,从而极大地降低了共识复杂度,减小通信压力,增大了联盟链的节点规模;且,每个共识节点在该共识节点所属的共识节点组中进行共识时,只需等待本共识节点组中的其他共识节点发送的共识状态即可执行后续的共识过程,而无需像现有技术需要等待区块链系统中的全部共识节点发送的共识状态方可执行后续的共识过程,从而可以大大减少每个共识节点的共识过程所需的时间,使得区块链系统的共识效率得到较大提升。
可选地,在上述步骤S301中,N个共识节点组中包括一个委员会组和N-1个副本组,委员会组中包括一个主节点和至少一个从节点。共识节点组中的每个共识节点对待共识区块进行共识验证,获得组内共识结果之前,委员会组中的主节点生成待共识区块并将待共识区块发送给委员会组中的从节点,委员会组中的从节点将接收的待共识区块发送给N-1个副本组中的共识节点。
本发明实施例中,委员会组是根据区块链上最高区块的块高,从N个共识节点组中确定的。具体实施中,共识节点根据区块链上最高区块的块高,周期性轮流选择各个共识节点组为委员会组,区块链系统每共识R个区块后,基于最新区块重新从N个共识节点组中选举出委员会组。
示例性地,设定周期P的最高区块的块高为j,对应的哈希值为blockHash(j),共识节点组数量为N,则周期P选取的委员会组可以采用以下公式(1)计算获得:
Committee(P)=blockHash(i/R*R)%M………………(1)
其中,Committee(P)表示周期P选取的委员会组。
进一步地,委员会组中的主节点是根据区块链上最高区块的块高,从委员会组中的各个共识节点中确定的。具体实施中,委员会组中的共识节点根据区块链上最高区块的块高,从委员会组中周期性轮流共识节点作为主节点。
示例性地,设定当前轮委员会组为Committee(R),每个共识节点组包括n个共识节点,最高区块的块高为j,对应的哈希值为blockHash(j),委员会组视图为CommitteeView,则委员会组中的主节点可以采用以下公式(2)计算获得:
LeaderIdx=n*Committee(R)+(blockHash(i)+CommitteeView)%n…(2)
其中,LeaderIdx为委员会组中的主节点索引。
基于区块链中最高区块的块高周期性选举委员会组以及主节点,防止共识节点作恶,提高了区块链系统的安全性。
在每次成功执行一轮区块共识后,均可以从委员会组的多个共识节点中选取一个共识节点作为主节点,将其它共识节点作为从节点,其中,成功执行一轮区块共识可以通过多种方式来确定,比如若检测到共识节点的内存中新增加了一个历史区块,则可以认为成功执行了一轮区块共识,或者若检测到共识节点更新了内部的预设数据库,则可以认为成功执行了一轮区块共识,等等。
在一个示例中,委员会组中的每个共识节点可以将各自确定的主节点的编号发送给委员会组中的其它共识节点,若对某一主节点的编号共识通过的共识节点数量大于预设数量,则可以将该编号对应的共识节点作为下一轮区块共识的主节点。在另一个示例中,每个共识节点确定主节点的编号后,若自己的节点标识与主节点的编号匹配,则该共识节点自动作为下一轮区块共识的主节点;若自己的节点标识与主节点的编号不匹配,则可以作为从节点,并不作任何处理,等待执行下一轮区块共识即可。
举例来说,表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作为下一轮区块共识的从节点。
进一步地,在确定委员会组以及委员会组中的主节点和从节点后,由委员会组中的主节点生成待共识区块并将待共识区块发送给委员会组中的从节点。委员会组中的从节点将接收的待共识区块发送给N-1个副本组中的共识节点。
具体实施中,委员会组中的主节点可以从主节点的交易池中获取该轮区块共识待处理的交易数据,并根据该轮区块共识待处理的交易数据生成待共识区块。具体地说,主节点可以使用当前最高区块的哈希值、当前最高区块的块高以及当前的时间戳组装待共识区块的区块头,并可以使用该轮区块共识待处理的交易数据组装待共识区块的区块体,进而可以根据待共识区块的区块头和区块体生成待共识区块。主节点将待共识区块广播给委员会组中的从节点。委员会组中的从节点在接收到待共识区块后,将待共识区块发送给N-1个副本组中的共识节点,同时,主节点也可以将待共识区块广播发送给N-1个副本组中的共识节点,从而实现委员会组中各共识节点的流量负载均衡。具体实施中,主节点可以将待共识区块封装在Prepare包内,然后将Prepare包广播给委员会组中的从节点以及N-1个副本组中的共识节点,委员会组中的从节点在接收到Prepare包后,将Prepare包发送给N-1个副本组中的共识节点。在该阶段,节点只需要向委员会组内的n-1个从节点以及N-1个副本组中的共识节点发送prepare包,因此该阶段对应的通信开销为(n+N-2),相较于向区块链系统中除主节点以外的所有共识节点发送prepare包,对应的通信开销为(M-1)来说,大大降低了通信开销。
一种可能的实施方式,根据预设规则确定委员会组中的主节点和从节点在N-1个副本组中对应的共识节点,然后分别将待共识区块发送给N-1个副本组中对应的共识节点,具体地,委员会组中编号为p的共识节点将待共识区块发送至N-1个副本组中编号为{p%n,n+p%n,2*n+p%n,…,(N-1)*n+p%n}的共识节点。
示例性地,如图4所示,设定区块链系统中包括3个共识节点组,分别为共识节点组1、共识节点组2以及共识节点组3,每个共识节点组包括3个共识节点,共识节点组1中共识节点的编号为共识节点1、共识节点2、共识节点3,共识节点组2中共识节点的编号为共识节点4、共识节点5、共识节点6,共识节点组3中共识节点的编号为共识节点7、共识节点8、共识节点9。设定共识节点组2为委员会组,共识节点组2中共识节点4为主节点,共识节点5和共识节点6为从节点。共识节点组2生成待共识区块并将待共识区块封装在Prepare包中,然后将Prepare包发送给共识节点5和共识节点6。共识节点5在接收到Prepare包后,将Prepare包发送给共识节点组1中的共识节点2以及共识节点组3中的共识节点8。共识节点6在接收到Prepare包后,将Prepare包发送给共识节点组1中的共识节点3以及共识节点组3中的共识节点9。共识节点4将Prepare包发送给共识节点组1中的共识节点1以及共识节点组3中的共识节点7。需要说明的是,本发明实施例并不仅限于采用上述一种规则确定委员会组中的主节点和从节点与N-1个副本组的共识节点之间的对应关系,还可以采用其他预设规则,对此,本申请不做具体限定。
一种可能的实施方式,委员会组中的主节点和从节点将待共识区块发送给N-1个副本组中的所有共识节点。
示例性地,设定区块链系统中包括3个共识节点组,分别为共识节点组1、共识节点组2以及共识节点组3,每个共识节点组包括3个共识节点,共识节点组1中共识节点的编号为共识节点1、共识节点2、共识节点3,共识节点组2中共识节点的编号为共识节点4、共识节点5、共识节点6,共识节点组3中共识节点的编号为共识节点7、共识节点8、共识节点9。设定共识节点组2为委员会组,共识节点组2中共识节点4为主节点,共识节点5和共识节点6为从节点。共识节点组2生成待共识区块并将待共识区块封装在Prepare包中,然后将Prepare包发送给共识节点5和共识节点6。共识节点5在接收到Prepare包后,将Prepare包发送给共识节点组1中的所有共识节点以及共识节点组3中的所有共识节点。共识节点6在接收到Prepare包后,将Prepare包发送给共识节点组1中的所有共识节点以及共识节点组3中的所有共识节点。共识节点4将Prepare包发送给共识节点组1中的所有共识节点以及共识节点组3中的所有共识节点。
可选地,在上述步骤S301中,第L个共识节点组中的每个共识节点对待共识区块进行共识验证,获得组内共识结果,并将组内共识结果发送给N-1个其他共识节点组的共识节点,本发明实施例至少提供以下三种实施方式:
一种可能的实施方式,第L个共识节点组中的第k个共识节点执行待共识区块中的交易,获得待共识区块的执行结果,并根据待共识区块的执行结果生成第一签名消息包。然后将第一签名消息包发送给第L个共识节点组中的其他共识节点。在确定接收的第一签名消息包的数量大于或等于第一阈值时,根据待共识区块的执行结果生成第二签名消息包,并将第二签名消息包发送给N-1个其他共识节点组的共识节点,其中,第L个共识节点组中的第k个共识节点为第L个共识节点组中任意一个共识接节点,k为正整数。
具体地,第L个共识节点组中的第k个共识节点在接收到prepare包后,解析prepare包得到待共识区块中待处理的交易数据。然后执行该待处理的交易数据得到待共识区块的执行结果。进一步地,该共识节点可以根据待共识区块的执行结果生成目标哈希值。然后根据消息包类型、目标哈希值、区块高度、当前视图、节点编号以及节点签名生成第一签名消息包,然后将第一签名消息发送至第L个共识节点组中的其他共识节点。第L个共识节点组中的第k个共识节点使用共识节点组中其他共识节点的节点标识对第一签名消息包进行验签,得到共识节点组中其他共识节点处理交易确定的待共识区块的执行结果。进一步地,第L个共识节点组中的第k个共识节点可以将自己处理交易确定的待共识区块的执行结果与第L个共识节点组中其它共识节点处理交易确定的待共识区块的执行结果进行对比,若相同,则可以接收其它共识节点发送的第一签名消息包,若不同,则可以拒绝其它共识节点发送的第一签名消息包。
第L个共识节点组中的第k个共识节点接收到的第一签名消息包的数量小于第一阈值,则该共识节点不进入到下一轮共识流程,开始等待超时;相应地,若该共识节点接收到的第一签名消息包的数量大于或等于第一阈值,则说明该共识节点处理交易得到的待共识区块的执行结果与共识节点组中其它大部分共识节点处理交易得到的待共识区块的执行结果相同,则根据待共识区块的执行结果生成目标哈希值。然后根据消息包类型、目标哈希值、区块高度、当前视图、节点编号以及节点签名生成第二签名消息包,并将第二签名消息包发送给N-1个其他共识节点组的共识节点,可选地,该共识节点可以将第二签名消息包发送给N-1个其他共识节点组中对应的共识节点,也可以将第二签名消息包发送给N-1个其他共识节点组中任意一个共识节点。其中,预设第一阈值可以由本领域技术人员根据经验进行设置,不作限定,比如,第一阈值可以设置为(n-f),其中n为共识节点组中共识节点的数量,f共识节点组中允许存在的恶意节点的最大数量。举例来说,当需要收集三分之二的消息包才能满足共识条件时,f为
进一步地,第L个共识节点组中的第k个共识节点在确定接收的其他共识节点组发送的第二签名消息包的数量大于或等于第二阈值时,生成第一确认包,并将第一确认包发送至第L个共识节点组中的其他共识节点。在确定接收的第一确认包的数量大于或等于第一阈值时,生成第二确认包,并将第二确认包发送给N-1个其他共识节点组的共识节点。在确定接收的其他共识节点组发送的第二确认包的数量大于或等于第二阈值时,确定待共识区块的共识结果并根据待共识区块的共识结果更新第L个共识节点组中的第k个共识节点内部的预设数据库。
具体地,第L个共识节点组中的第k个共识节点接收到其他共识节点组发送的第二签名消息包时,使用其他共识节点组中共识节点的节点标识对第二签名消息包进行验签,得到其他共识节点处理交易确定的待共识区块的执行结果。进一步地,第L个共识节点组中的第k个共识节点可以将自己处理交易确定的待共识区块的执行结果与其它共识节点组中的共识节点处理交易确定的待共识区块的执行结果进行对比,若相同,则可以接收其他共识节点组发送的第二签名消息包,若不同,则可以拒绝其他共识节点组发送的第二签名消息包。可选地,第L个共识节点组中的第k个共识节点接收到其他共识节点组发送的第二签名消息包后,可以将第二签名消息包发送给组内的其他共识节点,比如该共识节点可以将第二签名消息包发送给组内的临近共识节点。
第L个共识节点组中的第k个共识节点接收到的第二签名消息包的数量小于第一阈值,则该共识节点不进入到下一轮共识流程,开始等待超时;相应地,若该共识节点接收到的第二签名消息包的数量大于或等于第二阈值,则说明该共识节点处理交易得到的待共识区块的执行结果与其它共识节点组中大部分共识节点处理交易得到的待共识区块的执行结果相同,则该共识节点根据待共识区块的执行结果生成第一确认包,并第一确认包发送给共识节点组中的其他共识节点,其中,预设第二阈值可以由本领域技术人员根据经验进行设置,不作限定,比如,第二阈值可以设置为(N-G),其中N为共识节点组的数量,G共识节点组中允许存在的恶意节点组的最大数量。举例来说,当需要收集三分之二的消息包才能满足共识条件时,G为
第L个共识节点组中的第k个共识节点在接收到共识节点组中其它共识节点发送的第一确认包后,可以解析第一确认包得到共识节点组中其它每个共识节点处理交易确定的待共识区块的执行结果;如此,该共识节点可以将自己处理交易确定的待共识区块的执行结果与第L个共识节点组中任一其它共识节点处理交易确定的待共识区块的执行结果进行对比,若相同,则可以接收第L个共识节点组中其它共识节点发送的第一确认包,若不同,则可以拒绝第L个共识节点组中其它共识节点发送的第一确认包。相应地,若该共识节点接收到的第一确认包的数量小于第一阈值,则该共识节点不进入到下一轮共识流程,开始等待超时。相应地,若该共识节点接收到的第一确认包的数量大于或等于第一阈值,则说明该共识节点处理交易得到的待共识区块的执行结果与第L个共识节点组中其它大部分共识节点处理交易得到的待共识区块的执行结果相同,则根据待共识区块的执行结果生成第二确认包,并将第二确认包发送给N-1个其他共识节点组的共识节点。可选地,该共识节点可以将第二确认包发送给N-1个其他共识节点组中对应的共识节点,也可以将第二确认包发送给N-1个其他共识节点组中任意一个共识节点。
第L个共识节点组中的第k个共识节点在接收到其它共识节点组的共识节点发送的第二确认包后,可以解析第二确认包得到其它共识节点组的共识节点处理交易确定的待共识区块的执行结果;如此,该共识节点可以将自己处理交易确定的待共识区块的执行结果与其它共识节点组的共识节点处理交易确定的待共识区块的执行结果进行对比,若相同,则可以接收其它共识节点组的共识节点发送的第二确认包,若不同,则可以拒绝其它共识节点组的共识节点发送的第二确认包。可选地,该共识节点接收到其他共识节点组发送的第二确认包后,可以将第二签名消息包发送给组内的其他共识节点,比如该共识节点可以将第二确认包发送给组内的临近共识节点。
相应地,若该共识节点接收到的第二确认包的数量小于第二阈值,说明该共识节点为异常节点,则该共识节点不进入到下一轮共识流程,开始等待超时。相应地,若该共识节点接收到的第二确认包的数量大于或等于第二阈值,则说明该共识节点处理交易得到的待共识区块的执行结果与其它大部分共识节点组中的共识节点处理交易得到的待共识区块的执行结果相同,如此,该共识可以从内存中获取该共识节点处理交易所生成的待共识区块的执行结果,并可以将待共识区块的执行结果写入该共识节点内部的预设数据库中,从而完成该轮区块共识。
示例性地,设定区块链系统中包括3个共识节点组,分别为共识节点组1、共识节点组2以及共识节点组3,每个共识节点组包括3个共识节点,共识节点组1中共识节点的编号为共识节点1、共识节点2、共识节点3,共识节点组2中共识节点的编号为共识节点4、共识节点5、共识节点6,共识节点组3中共识节点的编号为共识节点7、共识节点8、共识节点9。设定共识节点组2为委员会组,共识节点组2中共识节点4为主节点,共识节点5和共识节点6为从节点。
以共识节点组2举例来说,如图5所示,共识节点4执行待共识区块中的交易数据,获得待共识区块的执行结果,并根据待共识区块的执行结果生成SignReq包,然后将SignReq包广播给共识节点5和共识节点6。共识节点5执行待共识区块中的交易数据,获得待共识区块的执行结果,并根据待共识区块的执行结果生成SignReq包,然后将SignReq包广播给共识节点4和共识节点6。共识节点6执行待共识区块中的交易数据,获得待共识区块的执行结果,并根据待共识区块的执行结果生成SignReq包,然后将SignReq包广播给共识节点4和共识节点5。共识节点组1和共识节点组3与共识节点组2的处理过程相同,此处不再赘述。
设定第一阈值为2,如图6所示,当共识节点4接收到两个SignReq包时,根据待共识区块的执行结果生成SuperSign包并广播SuperSign包给共识节点组1中的共识节点1和共识节点组中的共识节点7。当共识节点5接收到两个SignReq包时,根据待共识区块的执行结果生成SuperSign包并广播SuperSign包给共识节点组2中的共识节点1和共识节点组中的共识节点8。当共识节点6接收到两个SignReq包时,根据待共识区块的执行结果生成SuperSign包并广播SuperSign包给共识节点组1中的共识节点3和共识节点组中的共识节点9。共识节点组1和共识节点组3与共识节点组2的处理过程相同,此处不再赘述。
共识节点组1、共识节点组2和共识节点组3中任意一个共识节点接收到其他共识节点组广播的SuperSign包后,将SuperSign包发送给共识节点组内的临近共识节点,具体如图7所示。
进一步地,如图8所示,以共识节点组2举例来说,设定第二阈值为2,当共识节点4接收到两个SuperSign包时,根据待共识区块的执行结果生成CommitReq包,然后将CommitReq包广播给共识节点5和共识节点6。当共识节点5接收到两个SuperSign包时,根据待共识区块的执行结果生成CommitReq包,然后将CommitReq包广播给共识节点4和共识节点6。当共识节点6接收到两个SuperSign包时,根据待共识区块的执行结果生成CommitReq包,然后将CommitReq包广播给共识节点4和共识节点5。共识节点组1和共识节点组3与共识节点组2的处理过程相同,此处不再赘述。
设定第一阈值为2,如图9所示,当共识节点4接收到两个CommitReq包时,根据待共识区块的执行结果生成SuperCommit包并广播SuperCommit包给共识节点组1中的共识节点1和共识节点组中的共识节点7。当共识节点5接收到两个CommitReq包时,根据待共识区块的执行结果生成SuperCommit包,并广播SuperCommit包给共识节点组1中的共识节点2和共识节点组中的共识节点8。当共识节点6接收到两个CommitReq包时,根据待共识区块的执行结果生成SuperCommit包,并广播SuperCommit包给共识节点组1中的共识节点3和共识节点组中的共识节点9。共识节点组1和共识节点组3与共识节点组2的处理过程相同,此处不再赘述。
共识节点组1、共识节点组2和共识节点组3中任意一个共识节点接收到其他共识节点组广播的SuperCommit包后,将SuperCommit包发送给共识节点组内的临近共识节点,具体如图10所示。
当共识节点4接收到两个SuperCommit包时,则说明共识节点4处理交易得到的待共识区块的执行结果与其它2个共识节点组中的共识节点处理交易得到的待共识区块的执行结果相同,如此,共识节点4可以从内存中获取共识节点4处理交易所生成的待共识区块的执行结果,并可以将待共识区块的执行结果写入共识节点4内部的预设数据库中,从而完成该轮区块共识。当共识节点5接收到两个SuperCommit包时,则说明共识节点5处理交易得到的待共识区块的执行结果与其它2个共识节点组中的共识节点处理交易得到的待共识区块的执行结果相同,如此,共识节点5可以从内存中获取共识节点5处理交易所生成的待共识区块的执行结果,并可以将待共识区块的执行结果写入共识节点5内部的预设数据库中,从而完成该轮区块共识。当共识节点6接收到两个SuperCommit包时,则说明共识节点6处理交易得到的待共识区块的执行结果与其它2个共识节点组中的共识节点处理交易得到的待共识区块的执行结果相同,如此,共识节点6可以从内存中获取共识节点6处理交易所生成的待共识区块的执行结果,并可以将待共识区块的执行结果写入共识节点6内部的预设数据库中,从而完成该轮区块共识。
通过对区块链系统中的节点进行分组,可以将节点之间的共识过程转化为每个共识节点组内的少量共识节点之间的共识过程,从而极大地降低了共识复杂度,减小通信压力,增大了联盟链的节点规模。
另一种可能的实施方式,第L个共识节点组中的第k个共识节点执行待共识区块中的交易数据,获得待共识区块的执行结果,并根据待共识区块的执行结果生成签名消息包。然后将签名消息包发送给第L个共识节点组中的其他共识节点。在确定接收的签名消息包的数量大于或等于第一阈值时,生成第一确认包,然后将第一确认包发送给第L个共识节点组中的其他共识节点。在确定接收的第一确认包的数量大于或等于第一阈值时,生成第二确认包,并将第二确认包发送给N-1个其他共识节点组的共识节点。在确定接收的其他共识节点组发送的第二确认包的数量大于或等于第二阈值时,确定待共识区块的共识结果并根据待共识区块的共识结果更新第L个共识节点组中的第k个共识节点内部的预设数据库。
示例性地,设定区块链系统中包括3个共识节点组,分别为共识节点组1、共识节点组2以及共识节点组3,每个共识节点组包括3个共识节点,共识节点组1中共识节点的编号为共识节点1、共识节点2、共识节点3,共识节点组2中共识节点的编号为共识节点4、共识节点5、共识节点6,共识节点组3中共识节点的编号为共识节点7、共识节点8、共识节点9。设定共识节点组2为委员会组,共识节点组2中共识节点4为主节点,共识节点5和共识节点6为从节点。
以共识节点组2举例来说,如图11所示,共识节点4执行待共识区块中的交易数据,获得待共识区块的执行结果,并根据待共识区块的执行结果生成SignReq包,然后将SignReq包广播给共识节点5和共识节点6。共识节点5执行待共识区块中的交易数据,获得待共识区块的执行结果,并根据待共识区块的执行结果生成SignReq包,然后将SignReq包广播给共识节点4和共识节点6。共识节点6执行待共识区块中的交易数据,获得待共识区块的执行结果,并根据待共识区块的执行结果生成SignReq包,然后将SignReq包广播给共识节点4和共识节点5。共识节点组1和共识节点组3与共识节点组2的处理过程相同,此处不再赘述。
设定第一阈值为2,如图12所示,当共识节点4接收到两个SignReq包时,根据待共识区块的执行结果生成CommitReq包,并将CommitReq包广播给共识节点5和共识节点6。当共识节点5接收到两个SignReq包时,根据待共识区块的执行结果生成CommitReq包,并将CommitReq包广播给共识节点4和共识节点6。当共识节点6接收到两个SignReq包时,根据待共识区块的执行结果生成CommitReq包,并将CommitReq包广播给共识节点4和共识节点5。共识节点组1和共识节点组3与共识节点组2的处理过程相同,此处不再赘述。
进一步地,设定第二阈值为2,如图13所示,以共识节点组2举例来说,当共识节点4接收到两个CommitReq包时,根据待共识区块的执行结果生成SuperCommit包并广播SuperCommit包给共识节点组1中的共识节点1和共识节点组中的共识节点7。当共识节点5接收到两个CommitReq包时,根据待共识区块的执行结果生成SuperCommit包并广播SuperCommit包给共识节点组1中的共识节点2和共识节点组中的共识节点8。当共识节点6接收到两个CommitReq包时,根据待共识区块的执行结果生成SuperCommit包并广播SuperCommit包给共识节点组1中的共识节点3和共识节点组中的共识节点9。共识节点组1和共识节点组3与共识节点组2的处理过程相同,此处不再赘述。
共识节点组1、共识节点组2和共识节点组3中任意一个共识节点接收到其他共识节点组广播的SuperCommit后,将SuperCommit发送给共识节点组内的临近共识节点,如图14所示。
当共识节点4接收到两个SuperCommit包时,则说明共识节点4处理交易得到的待共识区块的执行结果与其它2个共识节点组中的共识节点处理交易得到的待共识区块的执行结果相同,如此,共识节点4可以从内存中获取共识节点4处理交易所生成的待共识区块的执行结果,并可以将待共识区块的执行结果写入共识节点4内部的预设数据库中,从而完成该轮区块共识。当共识节点5接收到两个SuperCommit包时,则说明共识节点5处理交易得到的待共识区块的执行结果与其它2个共识节点组中的共识节点处理交易得到的待共识区块的执行结果相同,如此,共识节点5可以从内存中获取共识节点5处理交易所生成的待共识区块的执行结果,并可以将待共识区块的执行结果写入共识节点5内部的预设数据库中,从而完成该轮区块共识。当共识节点6接收到两个SuperCommit包时,则说明共识节点6处理交易得到的待共识区块的执行结果与其它2个共识节点组中的共识节点处理交易得到的待共识区块的执行结果相同,如此,共识节点6可以从内存中获取共识节点6处理交易所生成的待共识区块的执行结果,并可以将待共识区块的执行结果写入共识节点6内部的预设数据库中,从而完成该轮区块共识。下一轮共识时,可以根据区块的权值,选取新的待共识区块进行共识。
另一种可能的实施方式,第L个共识节点组中的第k个共识节点执行待共识区块中的交易,获得待共识区块的执行结果,并根据待共识区块的执行结果生成第一签名消息包。然后将第一签名消息包发送给第L个共识节点组中的其他共识节点。在确定接收的第一签名消息包的数量大于或等于第一阈值时,根据待共识区块的执行结果生成第二签名消息包,并将第二签名消息包发送给N-1个其他共识节点组的共识节点。在确定接收的其他共识节点组发送的第二签名消息包的数量大于或等于第二阈值时,生成确认包,并将确认包发送给第L个共识节点组中的其他共识节点。在确定接收的确认包的数量大于或等于第一阈值时,确定待共识区块的共识结果并根据待共识区块的共识结果更新第L个共识节点组中的第k个共识节点内部的预设数据库。
示例性地,设定区块链系统中包括3个共识节点组,分别为共识节点组1、共识节点组2以及共识节点组3,每个共识节点组包括3个共识节点,共识节点组1中共识节点的编号为共识节点1、共识节点2、共识节点3,共识节点组2中共识节点的编号为共识节点4、共识节点5、共识节点6,共识节点组3中共识节点的编号为共识节点7、共识节点8、共识节点9。设定共识节点组2为委员会组,共识节点组2中共识节点4为主节点,共识节点5和共识节点6为从节点。
以共识节点组2举例来说,如图5所示,共识节点4执行待共识区块中的交易数据,获得待共识区块的执行结果,并根据待共识区块的执行结果生成SignReq包,然后将SignReq包广播给共识节点5和共识节点6。共识节点5执行待共识区块中的交易数据,获得待共识区块的执行结果,并根据待共识区块的执行结果生成SignReq包,然后将SignReq包广播给共识节点4和共识节点6。共识节点6执行待共识区块中的交易数据,获得待共识区块的执行结果,并根据待共识区块的执行结果生成SignReq包,然后将SignReq包广播给共识节点4和共识节点5。共识节点组1和共识节点组3与共识节点组2的处理过程相同,此处不再赘述。
设定第一阈值为2,如图6所示,当共识节点4接收到两个SignReq包时,根据待共识区块的执行结果生成SuperSign包并发送SuperSign包给共识节点组1中的共识节点1和共识节点组中的共识节点7。当共识节点5接收到两个SignReq包时,根据待共识区块的执行结果生成SuperSign包并广播SuperSign包给共识节点组2中的共识节点1和共识节点组中的共识节点8。当共识节点6接收到两个SignReq包时,根据待共识区块的执行结果生成SuperSign包并广播SuperSign包给共识节点组1中的共识节点3和共识节点组中的共识节点9。共识节点组1和共识节点组3与共识节点组2的处理过程相同,此处不再赘述。
共识节点组1、共识节点组2和共识节点组3中任意一个共识节点接收到其他共识节点组广播的SuperSign包后,将SuperSign包发送给共识节点组内的临近共识节点,具体如图7所示。
进一步地,如图8所示,以共识节点组2举例来说,设定第二阈值为2,当共识节点4接收到两个SuperSign包时,根据待共识区块的执行结果生成CommitReq包,然后将CommitReq包广播给共识节点5和共识节点6。当共识节点5接收到两个SuperSign包时,根据待共识区块的执行结果生成CommitReq包,然后将CommitReq包广播给共识节点4和共识节点6。当共识节点6接收到两个SuperSign包时,根据待共识区块的执行结果生成CommitReq包,然后将CommitReq包广播给共识节点4和共识节点5。共识节点组1和共识节点组3与共识节点组2的处理过程相同,此处不再赘述。
设定第二阈值为2,以共识节点组2举例来说,当共识节点4接收到两个CommitReq包时,则说明共识节点4处理交易得到的待共识区块的执行结果与共识节点组内的共识节点处理交易得到的待共识区块的执行结果相同,如此,共识节点4可以从内存中获取共识节点4处理交易所生成的待共识区块的执行结果,并可以将待共识区块的执行结果写入共识节点4内部的预设数据库中,从而完成该轮区块共识。当共识节点5接收到两个CommitReq包时,则说明共识节点5处理交易得到的待共识区块的执行结果与共识节点组内的共识节点处理交易得到的待共识区块的执行结果相同,如此,共识节点5可以从内存中获取共识节点5处理交易所生成的待共识区块的执行结果,并可以将待共识区块的执行结果写入共识节点5内部的预设数据库中,从而完成该轮区块共识。当共识节点6接收到两个CommitReq包时,则说明共识节点6处理交易得到的待共识区块的执行结果与共识节点组内的共识节点处理交易得到的待共识区块的执行结果相同,如此,共识节点6可以从内存中获取共识节点6处理交易所生成的待共识区块的执行结果,并可以将待共识区块的执行结果写入共识节点6内部的预设数据库中,从而完成该轮区块共识。下一轮共识时,可以根据区块的权值,选取新的待共识区块进行共识。
本发明实施例中,由于共识节点对应的节点标识一般为64字节二进制字符串,节点标识较长,若在共识消息(比如签名消息包或确认包)中携带节点标识会耗费部分网络带宽,为此,本发明实施例中每个共识节点维护一份公共的共识节点列表,节点索引记录了每个共识节点的节点标识在共识节点列表中的位置。共识节点发送共识消息时,只需要带上节点索引,其他共识节点即可以从公共的共识节点列表中索引出共识节点对应的节点标识,进而对共识消息进行解密,从而降低对带宽的消耗,从而提高共识效率。
基于相同的技术构思,如图15所示,本发明实施例提供了本发明实施提供了一种区块链系统,区块链系统包括N个共识节点组,其中,第L个共识节点组中的第k个共识节点1500包括:
验证模块1501,用于对待共识区块进行共识验证,获得组内共识结果,并将所述组内共识结果发送给N-1个其他共识节点组的共识节点,其中,N为正整数;
处理模块1502,用于根据接收的其他共识节点组的组内共识结果,确定所述待共识区块的共识结果。
可选地,所述验证模块1501具体用于:
执行所述待共识区块中的交易数据,获得所述待共识区块的执行结果,并根据所述待共识区块的执行结果生成第一签名消息包;
将所述第一签名消息包发送给所述第L个共识节点组中的其他共识节点;
在确定接收的第一签名消息包的数量大于或等于第一阈值时,根据所述待共识区块的执行结果生成第二签名消息包,并将所述第二签名消息包发送给N-1个其他共识节点组的共识节点。
可选地,所述处理模块1502具体用于:
在确定接收的其他共识节点组发送的第二签名消息包的数量大于或等于第二阈值时,生成第一确认包,并将所述第一确认包发送给所述第L个共识节点组中的其他共识节点;
在确定接收的第一确认包的数量大于或等于第一阈值时,生成第二确认包,并将所述第二确认包发送给N-1个其他共识节点组的共识节点;
在确定接收的其他共识节点组发送的第二确认包的数量大于或等于第二阈值时,确定所述待共识区块的共识结果并根据所述待共识区块的共识结果更新所述第L个共识节点组中的第k个共识节点内部的预设数据库。
可选地,所述处理模块1502具体用于:
在确定接收的其他共识节点组发送的第二签名消息包的数量大于或等于第二阈值时,生成确认包,并将所述确认包发送给所述第L个共识节点组中的其他共识节点;
在确定接收的确认包的数量大于或等于第一阈值时,确定所述待共识区块的共识结果并根据所述待共识区块的共识结果更新所述第L个共识节点组中的第k个共识节点内部的预设数据库。
可选地,所述验证模块1501具体用于:
执行所述待共识区块中的交易数据,获得所述待共识区块的执行结果,并根据所述待共识区块的执行结果生成签名消息包;
将所述签名消息包发送给所述第L个共识节点组中的其他共识节点;
在确定接收的签名消息包的数量大于或等于第一阈值时,生成第一确认包,并将所述第一确认包发送给所述第L个共识节点组中的其他共识节点;
在确定接收的第一确认包的数量大于或等于第一阈值时,生成第二确认包,并将所述第二确认包发送给N-1个其他共识节点组的共识节点。
可选地,所述处理模块1502具体用于:
在确定接收的其他共识节点组发送的第二确认包的数量大于或等于第二阈值时,确定所述待共识区块的共识结果并根据所述待共识区块的共识结果更新所述第L个共识节点组中的第k个共识节点内部的预设数据库。
可选地,所述N个共识节点组中包括一个委员会组和N-1个副本组,所述委员会组中包括一个主节点和至少一个从节点;
所述验证模块1501还用于:
对待共识区块进行共识验证,获得组内共识结果之前,生成待共识区块并将所述待共识区块发送给所述委员会组中的从节点;
将接收的所述待共识区块发送给所述N-1个副本组中的共识节点。
可选地,所述委员会组是根据区块链上最高区块的块高,从所述N个共识节点组中确定的;
所述委员会组中的主节点是根据区块链上最高区块的块高,从所述委员会组中的各个共识节点中确定的。
可选地,所述N个共识节点组是将M个共识节点随机划分后获得的,且所述N个共识节点组中的共识节点周期性更新,M为大于N的正整数。
基于相同的技术构思,本发明实施例提供了一种计算机设备,如图16所示,包括至少一个处理器1601,以及与至少一个处理器连接的存储器1602,本发明实施例中不限定处理器1601与存储器1602之间的具体连接介质,图16中处理器1601和存储器1602之间通过总线连接为例。总线可以分为地址总线、数据总线、控制总线等。
在本发明实施例中,存储器1602存储有可被至少一个处理器1601执行的指令,至少一个处理器1601通过执行存储器1602存储的指令,可以执行前述基于区块链系统的共识方法中所包括的步骤。
其中,处理器1601是计算机设备的控制中心,可以利用各种接口和线路连接计算机设备的各个部分,通过运行或执行存储在存储器1602内的指令以及调用存储在存储器1602内的数据,从而进行区块共识。可选的,处理器1601可包括一个或多个处理单元,处理器1601可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器1601中。在一些实施例中,处理器1601和存储器1602可以在同一芯片上实现,在一些实施例中,它们也可以在独立的芯片上分别实现。
处理器1601可以是通用处理器,例如中央处理器(CPU)、数字信号处理器、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件,可以实现或者执行本发明实施例中公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者任何常规的处理器等。结合本发明实施例所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。
存储器1602作为一种非易失性计算机可读存储介质,可用于存储非易失性软件程序、非易失性计算机可执行程序以及模块。存储器1602可以包括至少一种类型的存储介质,例如可以包括闪存、硬盘、多媒体卡、卡型存储器、随机访问存储器(Random AccessMemory,RAM)、静态随机访问存储器(Static Random Access Memory,SRAM)、可编程只读存储器(Programmable Read Only Memory,PROM)、只读存储器(Read Only Memory,ROM)、带电可擦除可编程只读存储器(Electrically Erasable Programmable Read-Only Memory,EEPROM)、磁性存储器、磁盘、光盘等等。存储器1602是能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。本发明实施例中的存储器1602还可以是电路或者其它任意能够实现存储功能的装置,用于存储程序指令和/或数据。
基于同一发明构思,本发明实施例提供了一种计算机可读存储介质,其存储有可由计算机设备执行的计算机程序,当程序在计算机设备上运行时,使得计算机设备执行上述基于区块链系统的共识方法的步骤。
本领域内的技术人员应明白,本发明的实施例可提供为方法、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
Claims (12)
1.一种基于区块链系统的共识方法,所述区块链系统包括N个共识节点组,其特征在于,包括:
第L个共识节点组中的每个共识节点对待共识区块进行共识验证,获得组内共识结果,并将所述组内共识结果发送给N-1个其他共识节点组的共识节点,其中,L、N为正整数;
所述第L个共识节点组中的每个共识节点根据接收的其他共识节点组的组内共识结果,确定所述待共识区块的共识结果。
2.如权利要求1所述的方法,其特征在于,所述第L个共识节点组中的每个共识节点对待共识区块进行共识验证,获得组内共识结果,并将所述组内共识结果发送给N-1个其他共识节点组的共识节点,包括:
所述第L个共识节点组中的第k个共识节点执行所述待共识区块中的交易数据,获得所述待共识区块的执行结果,并根据所述待共识区块的执行结果生成第一签名消息包,其中,k为正整数;
所述第L个共识节点组中的第k个共识节点将所述第一签名消息包发送给所述第L个共识节点组中的其他共识节点;
所述第L个共识节点组中的第k个共识节点在确定接收的第一签名消息包的数量大于或等于第一阈值时,根据所述待共识区块的执行结果生成第二签名消息包,并将所述第二签名消息包发送给N-1个其他共识节点组的共识节点。
3.如权利要求2所述的方法,其特征在于,所述第L个共识节点组中的每个共识节点根据接收的其他共识节点组的组内共识结果,确定所述待共识区块的共识结果,包括:
所述第L个共识节点组中的第k个共识节点在确定接收的其他共识节点组发送的第二签名消息包的数量大于或等于第二阈值时,生成第一确认包,并将所述第一确认包发送给所述第L个共识节点组中的其他共识节点;
所述第L个共识节点组中的第k个共识节点在确定接收的第一确认包的数量大于或等于第一阈值时,生成第二确认包,并将所述第二确认包发送给N-1个其他共识节点组的共识节点;
所述第L个共识节点组中的第k个共识节点在确定接收的其他共识节点组发送的第二确认包的数量大于或等于第二阈值时,确定所述待共识区块的共识结果并根据所述待共识区块的共识结果更新所述第L个共识节点组中的第k个共识节点内部的预设数据库。
4.如权利要求2所述的方法,其特征在于,所述第L个共识节点组中的每个共识节点根据接收的其他共识节点组的组内共识结果,确定所述待共识区块的共识结果,包括:
所述第L个共识节点组中的第k个共识节点在确定接收的其他共识节点组发送的第二签名消息包的数量大于或等于第二阈值时,生成确认包,并将所述确认包发送给所述第L个共识节点组中的其他共识节点;
所述第L个共识节点组中的第k个共识节点在确定接收的确认包的数量大于或等于第一阈值时,确定所述待共识区块的共识结果并根据所述待共识区块的共识结果更新所述第L个共识节点组中的第k个共识节点内部的预设数据库。
5.如权利要求1所述的方法,其特征在于,所述第L个共识节点组中的每个共识节点对待共识区块进行共识验证,获得组内共识结果,并将所述组内共识结果发送给N-1个其他共识节点组的共识节点,包括:
所述第L个共识节点组中的第k个共识节点执行所述待共识区块中的交易数据,获得所述待共识区块的执行结果,并根据所述待共识区块的执行结果生成签名消息包;
所述第L个共识节点组中的第k个共识节点将所述签名消息包发送给所述共识节点组中的其他共识节点;
所述第L个共识节点组中的第k个共识节点在确定接收的签名消息包的数量大于或等于第一阈值时,生成第一确认包,并将所述第一确认包发送给所述第L个共识节点组中的其他共识节点;
所述第L个共识节点组中的第k个共识节点在确定接收的第一确认包的数量大于或等于第一阈值时,生成第二确认包,并将所述第二确认包发送给N-1个其他共识节点组的共识节点。
6.如权利要求5所述的方法,其特征在于,所述第L个共识节点组中的每个共识节点根据接收的其他共识节点组的组内共识结果,确定所述待共识区块的共识结果,包括:
所述第L个共识节点组中的第k个共识节点在确定接收的其他共识节点组发送的第二确认包的数量大于或等于第二阈值时,确定所述待共识区块的共识结果并根据所述待共识区块的共识结果更新所述第L个共识节点组中的第k个共识节点内部的预设数据库。
7.如权利要求1至6任一所述的方法,其特征在于,所述N个共识节点组中包括一个委员会组和N-1个副本组,所述委员会组中包括一个主节点和至少一个从节点;
所述第L个共识节点组中的每个共识节点对待共识区块进行共识验证,获得组内共识结果之前,还包括:
所述委员会组中的主节点生成待共识区块并将所述待共识区块发送给所述委员会组中的从节点;
所述委员会组中的从节点将接收的所述待共识区块发送给所述N-1个副本组中的共识节点。
8.如权利要求7所述的方法,其特征在于,所述委员会组是根据区块链上最高区块的块高,从所述N个共识节点组中确定的;
所述委员会组中的主节点是根据区块链上最高区块的块高,从所述委员会组中的各个共识节点中确定的。
9.如权利要求7所述的方法,其特征在于,所述N个共识节点组是将M个共识节点随机划分后获得的,且所述N个共识节点组中的共识节点周期性更新,M为大于N的正整数。
10.一种区块链系统,其特征在于,所述区块链系统包括N个共识节点组,其中,第L个共识节点组中的第k个共识节点包括:
验证模块,用于对待共识区块进行共识验证,获得组内共识结果,并将所述组内共识结果发送给N-1个其他共识节点组的共识节点,其中,N为正整数;
处理模块,用于根据接收的其他共识节点组的组内共识结果,确定所述待共识区块的共识结果。
11.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现权利要求1~9任一权利要求所述方法的步骤。
12.一种计算机可读存储介质,其特征在于,其存储有可由计算机设备执行的计算机程序,当所述程序在计算机设备上运行时,使得所述计算机设备执行权利要求1~9任一所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010534725.4A CN111698094B (zh) | 2020-06-12 | 2020-06-12 | 一种基于区块链系统的共识方法及区块链系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010534725.4A CN111698094B (zh) | 2020-06-12 | 2020-06-12 | 一种基于区块链系统的共识方法及区块链系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111698094A true CN111698094A (zh) | 2020-09-22 |
CN111698094B CN111698094B (zh) | 2023-06-09 |
Family
ID=72480731
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010534725.4A Active CN111698094B (zh) | 2020-06-12 | 2020-06-12 | 一种基于区块链系统的共识方法及区块链系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111698094B (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112256305A (zh) * | 2020-11-04 | 2021-01-22 | 暗链科技(深圳)有限公司 | 一种区块链软件更新方法及系统 |
CN112953733A (zh) * | 2021-03-16 | 2021-06-11 | 昆明理工大学 | 一种数据治理的区块链通信资源整合共识方法 |
CN113347174A (zh) * | 2021-05-31 | 2021-09-03 | 矩阵元技术(深圳)有限公司 | 区块链中的共识方法、装置和电子设备 |
CN113343274A (zh) * | 2021-06-30 | 2021-09-03 | 深圳前海微众银行股份有限公司 | 一种区块链的共识方法及装置 |
CN113570357A (zh) * | 2021-09-26 | 2021-10-29 | 青岛理工大学 | 一种动态分层的高效pbft算法 |
CN114172659A (zh) * | 2021-11-30 | 2022-03-11 | 中国建设银行股份有限公司 | 区块链系统中的消息传输方法、装置、设备及存储介质 |
CN114726879B (zh) * | 2022-03-29 | 2024-02-27 | 北京流通宝数据科技服务有限公司 | 一种基于区块链分流验证交易信息的方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110517141A (zh) * | 2019-08-27 | 2019-11-29 | 深圳前海微众银行股份有限公司 | 一种基于区块链系统的共识方法及装置 |
CN110912994A (zh) * | 2019-11-22 | 2020-03-24 | 中国联合网络通信集团有限公司 | 一种区块链共识方法及装置 |
US20200133943A1 (en) * | 2018-10-29 | 2020-04-30 | Electronics And Telecommunications Research Institute | Blockchain system and operation method thereof |
-
2020
- 2020-06-12 CN CN202010534725.4A patent/CN111698094B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20200133943A1 (en) * | 2018-10-29 | 2020-04-30 | Electronics And Telecommunications Research Institute | Blockchain system and operation method thereof |
CN110517141A (zh) * | 2019-08-27 | 2019-11-29 | 深圳前海微众银行股份有限公司 | 一种基于区块链系统的共识方法及装置 |
CN110912994A (zh) * | 2019-11-22 | 2020-03-24 | 中国联合网络通信集团有限公司 | 一种区块链共识方法及装置 |
Non-Patent Citations (1)
Title |
---|
周万锴等: "基于区块链的环境监测数据安全传输方案", 《计算机科学》 * |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112256305A (zh) * | 2020-11-04 | 2021-01-22 | 暗链科技(深圳)有限公司 | 一种区块链软件更新方法及系统 |
CN112953733A (zh) * | 2021-03-16 | 2021-06-11 | 昆明理工大学 | 一种数据治理的区块链通信资源整合共识方法 |
CN113347174A (zh) * | 2021-05-31 | 2021-09-03 | 矩阵元技术(深圳)有限公司 | 区块链中的共识方法、装置和电子设备 |
CN113343274A (zh) * | 2021-06-30 | 2021-09-03 | 深圳前海微众银行股份有限公司 | 一种区块链的共识方法及装置 |
CN113570357A (zh) * | 2021-09-26 | 2021-10-29 | 青岛理工大学 | 一种动态分层的高效pbft算法 |
CN113570357B (zh) * | 2021-09-26 | 2021-12-17 | 青岛理工大学 | 一种动态分层的高效pbft算法 |
CN114172659A (zh) * | 2021-11-30 | 2022-03-11 | 中国建设银行股份有限公司 | 区块链系统中的消息传输方法、装置、设备及存储介质 |
CN114172659B (zh) * | 2021-11-30 | 2024-04-26 | 中国建设银行股份有限公司 | 区块链系统中的消息传输方法、装置、设备及存储介质 |
CN114726879B (zh) * | 2022-03-29 | 2024-02-27 | 北京流通宝数据科技服务有限公司 | 一种基于区块链分流验证交易信息的方法 |
Also Published As
Publication number | Publication date |
---|---|
CN111698094B (zh) | 2023-06-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111698094A (zh) | 一种基于区块链系统的共识方法及区块链系统 | |
CN110503558B (zh) | 一种基于区块链系统的处理方法及装置 | |
CN110474986B (zh) | 一种基于区块链系统的共识方法、装置及系统 | |
CN110517141B (zh) | 一种基于区块链系统的共识方法及装置 | |
US20210176072A1 (en) | Blockchain post-quantum signature scheme | |
CN110875893B (zh) | 共识验证方法、校验节点及区块链系统 | |
CN107171810B (zh) | 区块链的验证方法及装置 | |
EP3816910B1 (en) | Blockchain-based transaction processing method and apparatus, and electronic device | |
JP7165148B2 (ja) | ブロックチェーンネットワークにおける整合性のある分散型メモリプールのための方法及びシステム | |
CN108984789B (zh) | 分布式记账的方法、装置、存储介质及电子设备 | |
EP3816922A1 (en) | Blockchain-based transaction processing method and apparatus, and electronic device | |
JP2022185070A (ja) | ブロックチェーン・ネットワークにおける高速伝搬のための方法及び特殊ネットワーク・ノード | |
CN113570466B (zh) | 一种交易数据处理方法、装置以及可读存储介质 | |
CN111682942B (zh) | 一种应用于许可链的二元加权拜占庭容错共识方法 | |
CN111523890A (zh) | 基于区块链的数据处理方法、装置、存储介质及设备 | |
US11275564B2 (en) | Decentralized random number generator | |
US20230275771A1 (en) | Pre-execution of block chain transaction in parallel during block consensus | |
CN111010284B (zh) | 一种待共识区块的处理方法、相关装置及区块链系统 | |
CN110570311B (zh) | 区块链的共识方法、装置及设备 | |
CN113064764B (zh) | 在区块链系统中执行区块的方法及装置 | |
CN113994324B (zh) | 具有高效世界状态数据结构的区块链系统 | |
CN110597922A (zh) | 数据处理方法、装置、终端及存储介质 | |
Li et al. | ISCP: An Improved Blockchain Consensus Protocol. | |
JP2022086931A5 (zh) | ||
Tanygin et al. | The Method for Reducing Memory Costs for Messages Processing |
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 |