CN111523901B - 基于拜占庭容错算法的区块链的共识方法、装置及系统 - Google Patents
基于拜占庭容错算法的区块链的共识方法、装置及系统 Download PDFInfo
- Publication number
- CN111523901B CN111523901B CN202010630539.0A CN202010630539A CN111523901B CN 111523901 B CN111523901 B CN 111523901B CN 202010630539 A CN202010630539 A CN 202010630539A CN 111523901 B CN111523901 B CN 111523901B
- Authority
- CN
- China
- Prior art keywords
- consensus
- hash
- block
- proposal
- node
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/64—Protecting data integrity, e.g. using checksums, certificates or 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/23—Updating
- G06F16/2365—Ensuring data consistency and integrity
-
- 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/23—Updating
- G06F16/2379—Updates performed during online database operations; commit processing
-
- 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
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/12—Applying verification of the received information
-
- 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
- H04L9/3239—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 involving non-keyed hash functions, e.g. modification detection codes [MDCs], MD5, SHA or RIPEMD
-
- 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
-
- 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
- G06Q20/00—Payment architectures, schemes or protocols
- G06Q20/38—Payment protocols; Details thereof
- G06Q20/382—Payment protocols; Details thereof insuring higher security of transaction
- G06Q20/3827—Use of message hashing
-
- 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
- G06Q20/00—Payment architectures, schemes or protocols
- G06Q20/38—Payment protocols; Details thereof
- G06Q20/389—Keeping log of transactions for guaranteeing non-repudiation of a transaction
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Theoretical Computer Science (AREA)
- Business, Economics & Management (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Accounting & Taxation (AREA)
- Databases & Information Systems (AREA)
- Finance (AREA)
- Data Mining & Analysis (AREA)
- General Business, Economics & Management (AREA)
- Strategic Management (AREA)
- Computer Hardware Design (AREA)
- General Health & Medical Sciences (AREA)
- Software Systems (AREA)
- Bioethics (AREA)
- Health & Medical Sciences (AREA)
- Computing Systems (AREA)
- Development Economics (AREA)
- Economics (AREA)
- Marketing (AREA)
- Technology Law (AREA)
- Hardware Redundancy (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Retry When Errors Occur (AREA)
Abstract
本说明书实施例提供一种基于拜占庭容错算法的区块链的共识方法、装置及系统。方法包括:利用分叉节点和未分叉节点维护的分布式账本中的前区块哈希不同的特性,将前区块哈希引入到共识协议中,由各节点基于各自的前区块哈希生成提议摘要,并依据提议摘要验证各节点与发起共识提议的节点的前区块的一致性,确保参与共识的节点是基于一致的前区块下进行共识。
Description
技术领域
本文件涉及计算机技术领域,尤其涉及一种基于拜占庭容错算法的区块链的共识方法、装置及系统。
背景技术
共识协议用于让区块链中分散在世界各地的节点形成一致的意见。在现有的区块链系统,通过共识协议可以将打包的交易集合复制到网络中其他参与共识的节点上,以保证大部分节点都有一致的数据副本,由各共识节点基于一致交易集合进行交易执行并生成新的区块,新的区块生成后,在继续下一个交易集合的共识,并重复上述流程。共识协议能够保证大部分节点在共识结束后有相同的交易集合,但不能保证是基于相同交易集合的输入生成一致的区块。
因此,需要更加可靠的方案。
发明内容
本说明书实施例提供一种基于拜占庭容错算法的区块链的共识方法、装置及系统,以确保参与共识的节点是基于一致的前区块下进行共识。
本说明书实施例还提供一种基于拜占庭容错算法的区块链的共识方法,包括:
联盟链的第一共识节点发起共识提议,所述共识提议包括第一提议摘要,所述第一提议摘要基于所述第一共识节点维护的第一前区块哈希生成;
所述联盟链的第二共识节点响应所述共识提议,基于所述第二共识节点维护的第二前区块哈希,生成第二提议摘要;
所述第二共识节点若检测到所述第一提议摘要和所述第二提议摘要不匹配,则不参与针对所述共识提议的共识;
其中,所述第一前区块哈希和所述第二前区块哈希分别为所述第一共识节点和所述第二共识节点维护的分布式账本中的最新区块之前最近的N个区块的哈希值,N为正整数。
本说明书实施例还提供一种基于拜占庭容错算法的区块链的共识方法,包括:
联盟链的第一共识节点发起共识提议,所述共识提议包括第一提议摘要,所述第一提议摘要基于所述第一共识节点维护的第一前区块哈希生成;
所述联盟链的第二共识节点响应所述共识提议,基于所述第二共识节点维护的第二前区块哈希,生成第二提议摘要;
所述第二共识节点若检测到所述第一提议摘要和所述第二提议摘要匹配,则参与针对所述共识提议的共识;
其中,所述第一前区块哈希和所述第二前区块哈希分别为所述第一共识节点和所述第二共识节点维护的分布式账本中的最新区块之前最近的N个区块的哈希值,N为正整数。
本说明书实施例还提供一种基于拜占庭容错算法的区块链的共识方法,包括:
联盟链的第一共识节点发起共识提议,所述共识提议包括第一提议摘要,所述第一提议摘要基于所述第一共识节点维护的第一前区块哈希生成;
其中,所述第一前区块哈希为所述第一共识节点维护的分布式账本中的最新区块之前最近的N个区块的哈希值,N为正整数。
本说明书实施例还提供一种基于拜占庭容错算法的区块链的共识方法,包括:
联盟链的第二共识节点接收所述联盟链的第一共识节点发起的共识提议,所述共识提议包括第一提议摘要,所述第一提议摘要基于所述第一共识节点维护的第一前区块哈希生成,所述第一前区块哈希为所述第一共识节点维护的分布式账本中的最新区块之前最近的N个区块的哈希值,N为正整数;
响应所述共识提议,基于所述第二共识节点维护的第二前区块哈希,生成第二提议摘要,所述第二前区块哈希为所述第二共识节点维护的分布式账本中的最新区块之前最近的N个区块的哈希值,N为正整数;
若检测到所述第一提议摘要和所述第二提议摘要不匹配,则不参与针对所述共识提议的共识;反之,则参与针对所述共识提议的共识。
本说明书实施例还提供一种基于拜占庭容错算法的区块链的共识系统,包括:第一共识节点和第二共识节点,其中:
所述第一共识节点,发起共识提议,所述共识提议包括第一提议摘要,所述第一提议摘要基于所述第一共识节点维护的第一前区块哈希生成;
所述第二共识节点,响应所述共识提议,基于所述第二共识节点维护的第二前区块哈希,生成第二提议摘要;若检测到所述第一提议摘要和所述第二提议摘要不匹配,则不参与针对所述共识提议的共识;反之,则参与针对所述共识提议的共识;
其中,所述第一前区块哈希和所述第二前区块哈希分别为所述第一共识节点和所述第二共识节点维护的分布式账本中的最新区块之前最近的N个区块的哈希值,N为正整数。
本说明书实施例还提供一种基于拜占庭容错算法的区块链的共识装置,包括:
提议模块,发起共识提议,所述共识提议包括第一提议摘要,所述第一提议摘要基于联盟链的第一共识节点维护的第一前区块哈希生成;
其中,所述第一前区块哈希为所述第一共识节点维护的分布式账本中的最新区块之前最近的N个区块的哈希值,N为正整数。
本说明书实施例还提供一种基于拜占庭容错算法的区块链的共识装置,包括:
接收模块,接收联盟链的第一共识节点发起的共识提议,所述共识提议包括第一提议摘要,所述第一提议摘要基于所述第一共识节点维护的第一前区块哈希生成,所述第一前区块哈希为所述第一共识节点维护的分布式账本中的最新区块之前最近的N个区块的哈希值,N为正整数;
响应模块,响应所述共识提议,基于所述联盟链的第二共识节点维护的第二前区块哈希,生成第二提议摘要,所述第二前区块哈希为所述第二共识节点维护的分布式账本中的最新区块之前最近的N个区块的哈希值,N为正整数;
处理模块,若检测到所述第一提议摘要和所述第二提议摘要不匹配,则不参与针对所述共识提议的共识;反之,则参与针对所述共识提议的共识。
本说明书实施例还提供一种电子设备,包括:
处理器;以及
被安排成存储计算机可执行指令的存储器,所述可执行指令在被执行时使所述处理器执行以下操作:
发起共识提议,所述共识提议包括第一提议摘要,所述第一提议摘要基于联盟链的第一共识节点维护的第一前区块哈希生成;
其中,所述第一前区块哈希为所述第一共识节点维护的分布式账本中的最新区块之前最近的N个区块的哈希值,N为正整数。
本说明书实施例还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如下操作:
发起共识提议,所述共识提议包括第一提议摘要,所述第一提议摘要基于联盟链的第一共识节点维护的第一前区块哈希生成;
其中,所述第一前区块哈希为所述第一共识节点维护的分布式账本中的最新区块之前最近的N个区块的哈希值,N为正整数。
本说明书实施例还提供一种电子设备,包括:
处理器;以及
被安排成存储计算机可执行指令的存储器,所述可执行指令在被执行时使所述处理器执行以下操作:
接收联盟链的第一共识节点发起的共识提议,所述共识提议包括第一提议摘要,所述第一提议摘要基于所述第一共识节点维护的第一前区块哈希生成,所述第一前区块哈希为所述第一共识节点维护的分布式账本中的最新区块之前最近的N个区块的哈希值,N为正整数;
响应所述共识提议,基于所述联盟链的第二共识节点维护的第二前区块哈希,生成第二提议摘要,所述第二前区块哈希为所述第二共识节点维护的分布式账本中的最新区块之前最近的N个区块的哈希值,N为正整数;
若检测到所述第一提议摘要和所述第二提议摘要不匹配,则不参与针对所述共识提议的共识;反之,则参与针对所述共识提议的共识。
本说明书实施例还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如下操作:
接收联盟链的第一共识节点发起的共识提议,所述共识提议包括第一提议摘要,所述第一提议摘要基于所述第一共识节点维护的第一前区块哈希生成,所述第一前区块哈希为所述第一共识节点维护的分布式账本中的最新区块之前最近的N个区块的哈希值,N为正整数;
响应所述共识提议,基于所述联盟链的第二共识节点维护的第二前区块哈希,生成第二提议摘要,所述第二前区块哈希为所述第二共识节点维护的分布式账本中的最新区块之前最近的N个区块的哈希值,N为正整数;
若检测到所述第一提议摘要和所述第二提议摘要不匹配,则不参与针对所述共识提议的共识;反之,则参与针对所述共识提议的共识。
本说明书一个实施例实现了,通过在基于拜占庭容错算法的共识协议中引入对前区块哈希进行共识的功能,使得共识节点能够判断自身或者发起共识的节点是否发生分叉,并决策是否参与共识,从而保证参与共识的节点都是基于一致的前区块进行的共识。
附图说明
此处所说明的附图用来提供对本说明书的进一步理解,构成本说明书的一部分,本说明书的示意性实施例及其说明用于解释本说明书,并不构成对本说明书的不当限定。在附图中:
图1为本说明书一实施例提供的基于拜占庭容错算法的区块链的共识方法的流程示意图;
图2为本说明书另一实施例提供的基于拜占庭容错算法的区块链的共识方法的流程示意图;
图3为本说明书又一实施例提供的基于拜占庭容错算法的区块链的共识方法的流程示意图;
图4为本说明书一实施例提供的第一共识节点维护的分布式账本的示意图;
图5为本说明书一实施例提供的第二共识节点维护的分布式账本的示意图;
图6为本说明书又一实施例提供的基于拜占庭容错算法的区块链的共识方法的流程示意图;
图7为本说明书一实施例提供的基于拜占庭容错算法的区块链的共识装置的结构示意图;
图8为本说明书另一实施例提供的基于拜占庭容错算法的区块链的共识装置的结构示意图;
图9为本说明书一实施例提供的一种电子设备的结构示意图。
具体实施方式
为使本说明书的目的、技术方案和优点更加清楚,下面将结合本说明书具体实施例及相应的附图对本说明书技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本说明书一部分实施例,而不是全部的实施例。基于本说明书中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本文件保护的范围。
基于背景技术部分陈述的,共识协议能够保证大部分节点在共识结束后有相同的交易集合,但并不能保证在交易执行后节点能基于相同交易集合的输入生成一致的区块。例如,在进行新一轮共识时,如果上一个区块分叉了,而分叉的节点或未分叉节点均都无法及时判断出自己是否分叉并继续参与共识,进而影响节点生成的区块一致性。基于此,本说明书提供一种基于拜占庭容错算法的区块链的共识方法,通过在共识协议中引入了对前区块哈希进行共识的功能,使得共识节点能够及时判断自身或者发起共识的节点是否发生分叉,并决策是否参与共识,进而保证参与共识的节点都是基于一致的前区块下进行的共识。
以下结合附图,详细说明本说明书各实施例提供的技术方案。
图1为本说明书一实施例提供的基于拜占庭容错算法的区块链的共识方法的流程示意图,参见图1,所述方法具体可以包括如下步骤:
步骤102、联盟链的第一共识节点发起共识提议,所述共识提议包括第一提议摘要,所述第一提议摘要基于所述第一共识节点维护的第一前区块哈希生成;
步骤104、所述联盟链的第二共识节点响应所述共识提议,基于所述第二共识节点维护的第二前区块哈希,生成第二提议摘要;
其中,第一共识节点是指联盟链中发起共识提议的节点,第二共识节点是指联盟链中可参与共识的节点,如在存在主从关系的联盟链中,所述第一共识节点为主节点,第二共识节点为从节点。
步骤106、所述第二共识节点若检测到所述第一提议摘要和所述第二提议摘要不匹配,则不参与针对所述共识提议的共识;
其中,所述第一前区块哈希和所述第二前区块哈希分别为所述第一共识节点和所述第二共识节点维护的分布式账本中的最新区块之前最近的N个区块的哈希值,N为正整数。
优选地,前区块哈希可以取最新区块的上一个区块的哈希值,即所述第一前区块哈希为所述第一共识节点维护的分布式账本中的最新区块的上一个区块的哈希值;所述第二前区块哈希为所述第二共识节点维护的分布式账本中的最新区块的上一个区块的哈希值。
本说明书实施例在此示出了上述前区块哈希的一种具体实现方式。当然,应理解,前区块哈希也可以采用其它的方式实现,本申请实施例对此不作限制。基于此,本说明书实施例通过将最新区块的上一个区块引入共识协议中,基于最新区块的上一个区块的哈希值与最新区块相邻,可规避两者之间存在分叉的情况;而且,验证最新区块的上一个区块的哈希值的一致性即可确保之前各区块的一致性,因此,可降低所需匹配的数据量。
下面对引入前区块哈希的方式进行详细说明:
引入前区块哈希的第一种实现方式可以为:
在现有共识提议的数据结构下,修改提议摘要的计算方式,增加前区块哈希,以与交易哈希一起作为提议摘要的计算要素。包括:所述第一提议摘要基于所述第一前区块哈希和所述第一共识节点需要提议的交易集合的第一交易哈希生成;同理,第二提议摘要也可基于所述第二前区块哈希和第二共识节点确定的所述交易集合的第二交易哈希生成。
所述第一种实现方式具体可以为:
第一共识节点从本节点维护的分布式账本中的最新区块的块头中读取上一区块的哈希值,记为第一前区块哈希;然后,基于第一前区块哈希和需要提议的交易集合,生成第一提议摘要,并将第一提议摘要和需要提议的交易集合添加至共识提议中。
第二共识节点接收到所述共识提议后,从本节点维护的分布式账本中的最新区块的块头中读取上一区块的哈希值,记为第二前区块哈希;然后,基于第二前区块哈希和需要提议的交易集合,重生成一提议摘要,记为第二提议摘要,并检测第一提议摘要和第二提议摘要是否相匹配,若是,则参与针对所述需要提议的交易集合的共识,反之,若检测到所述第一提议摘要和所述第二提议摘要不匹配,则不参与针对所述共识提议的共识。
其中,前区块哈希的引入方式可以为在共识协议约定修改拜占庭容错算法pbft共识算法的预准备Preprepare消息(即提议消息)中的提议摘要Digest的计算方式,将前区块哈希作为计算变量引入其中,以生成新的提议摘要。具体可以示例为:
S1、计算提议摘要Digest
第一共识节点确定所述交易集合的第一交易哈希;基于所述第一交易哈希和所述第一前区块哈希,生成第一提议摘要。其计算逻辑包括:
struct ConsensusDigest {
Digest tx_root_hash;
Digest last_block_hash;
};
S2、计算Preprepare消息
基于所述第一提议摘要和所述交易集合,生成Preprepare消息并广播,以发起共识提议。其中,Preprepare消息的消息格式为:
struct PreprepareMessage {
View v;
Seq seq;
Digenst d; // 提议摘要
Batch batch; // 若干交易集合
};
同理,第二共识节点在接收到第一共识节点的共识提议之后,将依据上述提议摘要Digest和Preprepare消息的计算方式,基于交易集合的交易哈希和所述第二前区块哈希,生成第二提议摘要;最后,对比重新生成的第二提议摘要和共识提议中的第一提议摘要,若检测到所述第二提议摘要和所述第一提议摘要不匹配,则确定所述第一前区块哈希和所述第二前区块哈希不匹配,也就是说,第二共识节点的前区块和第一共识节点的前区块不一致,则第二共识节点不参与本次共识。
其中,第一共识节点和第二共识节点可通过计算交易集合的默克尔树的方式,取默克尔树的根哈希作为该交易结合的根哈希,也就是说,所述第一交易哈希为所述第一共识节点确定的所述交易集合对应的默克尔树的根哈希值;所述第二交易哈希为所述第二共识节点确定的所述共识提议中的交易集合对应的默克尔树的根哈希值。
引入前区块哈希的第二种实现方式可以为:
在现有共识提议的数据结构下,修改提议摘要的计算方式,使用前区块哈希作为新的计算要素替换提议摘要的目前的计算要素。包括:所述第一提议摘要基于所述第一前区块哈希生成;同理,第二提议摘要也可基于所述第二前区块哈希生成。
所述第二种实现方式具体可以为:
第一共识节点从本节点维护的分布式账本中的最新区块的块头中读取上一区块的哈希值,记为第一前区块哈希;然后,基于第一前区块哈希,生成第一提议摘要,并将第一提议摘要和需要提议的交易集合添加至共识提议中。
第二共识节点接收到所述共识提议后,从本节点维护的分布式账本中的最新区块的块头中读取上一区块的哈希值,记为第二前区块哈希;然后,基于第二前区块哈希,重生成一提议摘要,记为第二提议摘要,并检测第一提议摘要和第二提议摘要是否相匹配,若是,则参与针对所述需要提议的交易集合的共识,反之,若检测到所述第一提议摘要和所述第二提议摘要不匹配,则不参与针对所述共识提议的共识。
本说明书实施例在此示出了上述引入前区块哈希的两种具体实现方式。当然,应理解,引入前区块哈希也可以采用其它的方式实现,本申请实施例对此不作限制。基于此,本说明书实施例通过仅修改提议摘要的计算方式,将前区块哈希作为计算提议摘要的变量,该方式对现有框架的修改方式较小,便于推广。
另外,对于引入前区块哈希的第一种实现方式,考虑到计算提议摘要所使用的第一交易哈希对应的交易集合与共识提议中包含的交易集合可能存在不一致的情况,本实施例还提供了一种提议摘要计算方式,具体地:
对于第一提议摘要,第一共识节点先确定一交易集合(记为第一交易集合),并计算该第一交易集合的哈希值(记为第一交易哈希);然后,基于所述第一前区块哈希和所述第一共识节点确定的交易集合的第一交易哈希生成所述第一提议摘要。
不难理解的是,正常情况下,第一共识节点将把第一交易集合置于共识提议中并广播给其他节点,第二共识节点可通过解析共识提议,获知共识提议的对象是第一交易集合。但由于一些异常情况,共识提议中包括的交易集合可能并非是第一交易集合,而是另一交易集合(记为第二交易集合),则第二共识节点确定的共识提议的对象则是第二交易集合,因此,第二共识节点若使用第一共识节点计算的第一交易哈希进行第二提议摘要的计算,则可能将第二交易集合写入区块中,导致第一共识节点预期提议的交易集合与实际提议的交易集合不一致的情况。
针对该情况,对于第二提议摘要,第二共识节点先确定共识提议中包括的需要提议的交易集合,然后,重新计算所述共识提议中的交易集合的第二交易哈希,并基于所述共识提议中的交易集合的第二交易哈希和所述第二前区块哈希,生成第二提议摘要。
本说明书实施例在此示出了上述提议摘要计算方式的一种具体实现方式。当然,应理解,提议摘要计算方式也可以采用其它的方式实现,本申请实施例对此不作限制。基于此,本说明书实施例通过由第一共识节点和第二共识节点分别针对各自确定的需要提议的交易集合来计算提议摘要,避免第一共识节点预期提议的交易集合与实际提议的交易集合不一致的情况。
进一步地,若第一共识节点预期提议的交易集合与实际提议的交易集合不一致,则说明本次共识提议异常,节点没必要参与本次共识,因此,在执行步骤104中的生成第二提议摘要之前,共识协议还可约定将提议的交易集合的交易哈希写入共识提议或写入提议摘要中,先执行交易哈希的匹配步骤,以预先验证交易集合的一致性。
下面以将交易哈希写入提议摘要中为例,对交易哈希的匹配步骤进行说明:
第一共识节点在计算完成第一提议摘要之后,还将第一交易哈希写入第一提议摘要中;第二共识节点基于上述提议摘要计算方式计算第二交易哈希,并将第二交易哈希与第一提议摘要中的第一交易哈希进行匹配;若检测到所述第一交易哈希和所述第二交易哈希不匹配,则说明第一共识节点预期提议的交易集合与实际提议的交易集合不一致,不参与针对所述共识提议的共识;若检测到所述第一交易哈希和所述第二交易哈希相匹配,则说明第一共识节点预期提议的交易集合与实际提议的交易集合一致,可继续执行生成所述第二提议摘要的步骤。
本说明书实施例在此示出了上述交易哈希匹配步骤的一种具体实现方式。当然,应理解,交易哈希匹配步骤也可以采用其它的方式实现,本申请实施例对此不作限制。基于此,本说明书实施例通过将第一共识节点计算的第一交易哈希写入第一提议摘要中,以在第二共识节点进行提议摘要维度的匹配之前,先针对交易集合的交易哈希维度的匹配,并基于匹配结果判断第一共识节点预期提议的交易集合与实际提议的交易集合是否一致,进而判断是否有进一步执行提议摘要维度的匹配的必要,避免无用的提议摘要匹配导致的资源浪费。
综上所述,本说明书实施例通过在基于拜占庭容错算法的共识协议中引入对前区块哈希进行共识的功能,使得共识节点能够判断自身或者发起共识的节点是否发生分叉,并决策是否参与共识,从而保证参与共识的节点都是基于一致的前区块进行的共识。
图2为本说明书另一实施例提供的基于拜占庭容错算法的区块链的共识方法的流程示意图,参见图2,所述方法具体可以包括如下步骤:
步骤202、联盟链的第一共识节点发起共识提议,所述共识提议包括第一提议摘要,所述第一提议摘要基于所述第一共识节点维护的第一前区块哈希生成;
步骤204、所述联盟链的第二共识节点响应所述共识提议,基于所述第二共识节点维护的第二前区块哈希,生成第二提议摘要;
步骤206、所述第二共识节点若检测到所述第一提议摘要和所述第二提议摘要匹配,则参与针对所述共识提议的共识;
其中,其中,所述第一前区块哈希和所述第二前区块哈希分别为所述第一共识节点和所述第二共识节点维护的分布式账本中的最新区块之前最近的N个区块的哈希值,N为正整数。
可选的,所述第一前区块哈希为所述第一共识节点维护的分布式账本中的最新区块的上一个区块的哈希值;所述第二前区块哈希为所述第二共识节点维护的分布式账本中的最新区块的上一个区块的哈希值。
可选的,所述第一提议摘要基于所述第一前区块哈希和所述第一共识节点需要提议的交易集合的第一交易哈希生成;
其中,所述共识提议还包括需要提议的交易集合,步骤204,具体包括:
基于所述共识提议中的交易集合的第二交易哈希和所述第二前区块哈希,生成第二提议摘要。
可选的,所述第一交易哈希为所述第一共识节点确定的所述交易集合对应的默克尔树的根哈希值;所述第二交易哈希为所述第二共识节点确定的所述共识提议中的交易集合对应的默克尔树的根哈希值。
可选的,所述第一提议摘要携带所述第一交易哈希,则在生成第二提议摘要之前,方法还包括:
若检测到所述第一交易哈希和所述第二交易哈希不匹配,则不参与针对所述共识提议的共识;
若检测到所述第一交易哈希和所述第二交易哈希相匹配,则继续执行生成所述第二提议摘要的步骤。
可选的,方法还包括:
所述第二共识节点若检测到所述第一提议摘要和所述第二提议摘要不匹配,则不参与针对所述共识提议的共识。
基于此,本说明书实施例通过在基于拜占庭容错算法的共识协议中引入对前区块哈希进行共识的功能,使得共识节点能够判断自身或者发起共识的节点是否发生分叉,并决策是否参与共识,从而保证参与共识的节点都是基于一致的前区块进行的共识。另外,由于本说明书实施例与图1对应的实施例相对应,各步骤的实现方式也对应相似,故,此处不再对本说明书实施例进行展开说明。
图3为本说明书又一实施例提供的基于拜占庭容错算法的区块链的共识方法的流程示意图,可由联盟链中发起交易共识提议的第一共识节点执行,参见图3,所述方法具体可以包括如下步骤:
步骤302、联盟链的第一共识节点发起共识提议,所述共识提议包括第一提议摘要,所述第一提议摘要基于所述第一共识节点维护的第一前区块哈希生成;
其中,所述第一前区块哈希为所述第一共识节点维护的分布式账本中的最新区块之前最近的N个区块的哈希值,N为正整数。
下面对步骤302的实现方式进行详细说明:
步骤302的一种实现方式可以为:
在现有共识提议的数据结构下,修改提议摘要的计算方式,增加前区块哈希,以与交易哈希一起作为提议摘要的计算要素。
该实现方式具体可以包括如下步骤:
步骤S1、确定需要提议的交易集合;
具体地,客户端发起的请求被置于交易池中,第一共识节点在确认交易通过验证后,从交易池中抓取一定数量的交易,记为交易集合。
步骤S2、确定所述第一共识节点维护的第一前区块哈希,所述第一前区块哈希为所述第一共识节点维护的分布式账本中的最新区块之前最近的N个区块的哈希值,N为正整数;
具体地,参见图4,第一共识节点维护的分布式账本包括区块1 … 区块N… 区块M-1、区块M,其中,区块M为联盟链的最新生成的区块,也就是第一共识节点维护的最新区块,相应地,第一前区块哈希是指区块M之前最近的一个或多个区块的哈希值。
相应地,步骤S2的一种实现方式可以为:
确定第一共识节点维护的最新区块的上一个区块的哈希值;将所述上一个区块的哈希值作为所述第一前区块哈希。即,本实现方式是选择了距离最新区块最近的一个区块,如图4中的最新区块M的上一个区块M-1的哈希值,并将区块M-1的哈希值作为所述第一前区块哈希。
当然,在步骤S2的其他实现方式中,也可以使用多个之前最近区块的哈希,如使用最新区块之前的所有区块的哈希,此处不做限定。
进一步地,本说明书实施例之所以引入前区块哈希作为判断节点是否分叉的依据,是因为分叉节点和未分叉节点的前区块哈希不同。参见图5,未分叉节点的前区块哈希是区块1至区块M-2、区块M-1,分叉节点的前区块哈希是区块1至区块M-2、区块M-1`,显然,区块M的块头中记录的前一个区块的哈希值是指区块M-1的哈希值,而区块M`的块头中记录的前一个区块的哈希值是指区块M-1`的哈希值,两者是不同的,因此,可以用作判断节点分叉和未分叉的依据。
本说明书实施例在此示出了上述步骤S2的一种具体实现方式。当然,应理解,步骤S2也可以采用其它的方式实现,本申请实施例对此不作限制。基于此,本说明书实施例基于分叉节点和未分叉节点维护的前区块哈希不同的特性,使用节点各自维护的最新区块之前最近的一个或多个区块的哈希值作为前区块哈希,从而能够判断出本节点或发起共识的节点是否分叉。
步骤S3、基于交易集合和所述第一前区块哈希,生成提议摘要并发起共识提议。其一种实现方式可以为:
确定所述交易集合的第一交易哈希;基于所述第一交易哈希和所述第一前区块哈希,生成提议摘要;基于所述提议摘要和所述交易集合,生成提议消息并广播,以发起共识提议。
对于提议摘要和提议消息的具体计算方式、具体数据结构和具体消息格式,可适应于联盟链的类型、所采用的共识算法的类型而定,此处不做限定。如现行联盟链的共识主节点在发起共识提议时,提议消息中一般包含通过共识主节点业务校验的交易,而基于本说明书实施例,可修改提议摘要的计算方式,将前区块哈希引入到提议摘要的计算公式中。
步骤302的另一种实现方式可以为:
在现有共识提议的数据结构下,修改提议摘要的计算方式,使用前区块哈希作为新的计算要素替换提议摘要的目前的计算要素。
该实现方式具体可以包括如下步骤:
步骤S1`、确定需要提议的交易集合;
步骤S2`、确定所述第一共识节点维护的第一前区块哈希,所述第一前区块哈希为所述第一共识节点维护的分布式账本中的最新区块之前最近的N个区块的哈希值,N为正整数;
对于步骤S1`和步骤S2`,由于其分别于前一实现方式的步骤S1和步骤S2相对应,其实现方式也对应相似,故,此处不再对其进行展开说明。
步骤S3`、基于所述第一前区块哈希,生成提议摘要并发起共识提议。
对于步骤S3`,其实现方式已在图1对应的实施例中给出详细记载,故,此处不再赘述。
本说明书实施例在此示出了步骤302的两种具体实现方式。当然,应理解,步骤302也可以采用其它的方式实现,本申请实施例对此不作限制。基于此,本说明书实施例通过仅修改提议摘要的计算方式,将前区块哈希作为计算提议摘要的变量,该方式对现有框架的修改方式较小,便于推广。
可选的,所述第一前区块哈希为所述第一共识节点维护的分布式账本中的最新区块的上一个区块的哈希值。
可选的,所述第一交易哈希为所述第一共识节点确定的所述交易集合对应的默克尔树的根哈希值。
可选的,第一共识节点还可在第一提议摘要中写入第一交易哈希,以供第二共识节点验证第一交易哈希对应的交易集合和共识提议针对的交易集合是否一致。
综上所述,本说明书实施例通过在共识协议中引入了对前区块哈希进行共识的功能,使得共识节点能够及时判断自身或者发起共识的节点是否发生分叉,从而决策是否参与共识,进而保证参与共识的节点都是基于一致的前区块下进行的共识,避免加剧区块分叉情况。而且,不难理解的是,本说明书实施例是第一共识节点侧的实施例,其具体实现方式已在图1对应的实施例中进行了陈述,故,此处仅进行了简述。
图6为本说明书又一实施例提供的基于拜占庭容错算法的区块链的共识方法的流程示意图,可由联盟链的第二共识节点执行,参见图6,所述方法具体可以包括如下步骤:
步骤602、联盟链的第二共识节点接收所述联盟链的第一共识节点发起的共识提议,所述共识提议包括第一提议摘要,所述第一提议摘要基于所述第一共识节点维护的第一前区块哈希生成,所述第一前区块哈希为所述第一共识节点维护的分布式账本中的最新区块之前最近的N个区块的哈希值,N为正整数;
步骤604、响应所述共识提议,基于所述第二共识节点维护的第二前区块哈希,生成第二提议摘要,所述第二前区块哈希为所述第二共识节点维护的分布式账本中的最新区块之前最近的N个区块的哈希值,N为正整数;
具体地,参见图5,第二共识节点维护的联盟链中的区块包括区块1 … 区块M-2、区块M-1和区块M,其中,区块M为联盟链的最新生成的区块,也就是第二共识节点维护的最新区块,相应地,第二前区块哈希是指区块M之前最近的一个或多个区块的哈希值。
不难理解的是,相对于图3对应的实施例中的步骤302,步骤604也具备至少两种实现方式:
步骤604的第一种实现方式可以为:在现有共识提议的数据结构下,修改提议摘要的计算方式,增加前区块哈希,以与交易哈希一起作为提议摘要的计算要素。具体可以示例为:
接收到所述共识提议后,确定所述第二共识节点维护的最新区块的上一个区块的哈希值;将所述上一个区块的哈希值作为所述第二前区块哈希。即,本实现方式是从多个前区块中选出了距离最新区块最近的一个,如图5中的最新区块M的上一个区块M-1的哈希值,并将区块M-1的哈希值作为所述第二前区块哈希。
当然,在步骤604的其他实现方式中,也可以使用多个之前区块的哈希,如使用最新区块之前的所有区块的哈希,此处不做限定。但需要注意的是,基共识协议约定,第一共识节点选用的前区块和第二共识节点选用的前区块应是相对应的,包括选用的前区块的数量相等、选用的前区块在各自的分布式账本中的标识对应相同等。如,第一共识节点选用了最新区块之前的所有区块,则第二共识节点也会对应选择最新区块之前的所有区块,又如,第一共识节点仅选用最新区块的上一个区块,则第二共识节点也会对应选择最新区块的上一个区块。
步骤604的第二种实现方式可以为:在现有共识提议的数据结构下,修改提议摘要的计算方式,使用前区块哈希作为新的计算要素替换提议摘要的目前的计算要素。具体可以示例为:
第二共识节点接收到所述共识提议后,从本节点维护的分布式账本中的最新区块的块头中读取上一区块的哈希值,记为第二前区块哈希;然后,基于第二前区块哈希,重生成一提议摘要,记为第二提议摘要。
本说明书实施例在此示出了上述步骤604的两种具体实现方式。当然,应理解,步骤604也可以采用其它的方式实现,本申请实施例对此不作限制。基于此,本说明书实施例通过仅修改提议摘要的计算方式,将前区块哈希作为计算提议摘要的变量,该方式对现有框架的修改方式较小,便于推广。
步骤606、若检测到所述第一提议摘要和所述第二提议摘要不匹配,则不参与针对所述共识提议的共识;反之,则参与针对所述共识提议的共识。
具体地,第二共识节点从提议消息中解析出第一提议摘要和需要提议的交易集合;然后,重计算所述交易集合的第二交易哈希,并基于第二交易哈希和第二共识节点维护的第二前区块哈希,生成第二提议摘要;然后,检测第一提议摘要和第二提议摘要是否相匹配,若两者不匹配,则确认第一共识节点和第二共识节点中的一个为分叉节点,另一个为未分叉节点,并拒绝参与本次共识;反之,则确认两者的前区块结果相同,并参与本次共识。
可选的,所述第二前区块哈希为所述第二共识节点维护的分布式账本中的最新区块的上一个区块的哈希值。
可选的,所述共识提议还包括需要提议的交易集合,基于所述共识提议中的交易集合的第二交易哈希和所述第二前区块哈希,生成第二提议摘要。
可选的,所述第二交易哈希为所述第二共识节点确定的所述共识提议中的交易集合对应的默克尔树的根哈希值。
可选的,所述第一提议摘要携带所述第一交易哈希,则生成第二提议摘要之前,若检测到所述第一交易哈希和所述第二交易哈希不匹配,则不参与针对所述共识提议的共识;若检测到所述第一交易哈希和所述第二交易哈希相匹配,则继续执行生成所述第二提议摘要的步骤。
综上所述,本说明书实施例通过在共识协议中引入了对前区块哈希进行共识的功能,使得节点能够及时判断自身或者发起共识的节点是否发生分叉,从而决策是否参与共识,进而保证参与共识的节点都是基于一致的前区块下进行的共识,避免加剧区块分叉情况。
基于与图1或图2对应的方法实施例同样的发明创造,还提出了一种基于拜占庭容错算法的区块链的共识系统,包括:第一共识节点和第二共识节点,其中:
所述第一共识节点,发起共识提议,所述共识提议包括第一提议摘要,所述第一提议摘要基于所述第一共识节点维护的第一前区块哈希生成;
所述第二共识节点,响应所述共识提议,基于所述第二共识节点维护的第二前区块哈希,生成第二提议摘要;若检测到所述第一提议摘要和所述第二提议摘要不匹配,则不参与针对所述共识提议的共识;反之,则参与针对所述共识提议的共识;
其中,所述第一前区块哈希和所述第二前区块哈希分别为所述第一共识节点和所述第二共识节点维护的分布式账本中的最新区块之前最近的N个区块的哈希值,N为正整数。
可选的,所述第一前区块哈希为所述第一共识节点维护的分布式账本中的最新区块的上一个区块的哈希值;所述第二前区块哈希为所述第二共识节点维护的分布式账本中的最新区块的上一个区块的哈希值。
可选的,所述第一提议摘要基于所述第一前区块哈希和所述第一共识节点需要提议的交易集合的第一交易哈希生成;
其中,所述共识提议还包括需要提议的交易集合,所述第二共识节点,包括:
基于所述共识提议中的交易集合的第二交易哈希和所述第二前区块哈希,生成第二提议摘要。
可选的,所述第一交易哈希为所述第一共识节点确定的所述交易集合对应的默克尔树的根哈希值;所述第二交易哈希为所述第二共识节点确定的所述共识提议中的交易集合对应的默克尔树的根哈希值。
可选的,所述第一提议摘要携带所述第一交易哈希,则所述第二共识节点在生成第二提议摘要之前,若检测到所述第一交易哈希和所述第二交易哈希不匹配,则不参与针对所述共识提议的共识;若检测到所述第一交易哈希和所述第二交易哈希相匹配,则继续执行生成所述第二提议摘要的步骤。
可选的,所述第二共识节点若检测到所述第一提议摘要和所述第二提议摘要相匹配,则参与针对所述共识提议的共识。
由于本系统的第一共识节点和第二共识节点之间的交互过程及其工作原理已被详述在上述实施例中,因此,此处不再对其进行赘述。基于此,本系统通过在共识协议中引入了对前区块哈希进行共识的功能,使得节点能够及时判断自身或者发起共识的节点是否发生分叉,从而决策是否参与共识,进而保证参与共识的节点都是基于一致的前区块下进行的共识,避免加剧区块分叉情况。
图7为本说明书一实施例提供的基于拜占庭容错算法的区块链的共识装置的结构示意图,参见图7,所述装置可以包括:
提议模块701,发起共识提议,所述共识提议包括第一提议摘要,所述第一提议摘要基于联盟链的第一共识节点维护的第一前区块哈希生成;
其中,所述第一前区块哈希为所述第一共识节点维护的分布式账本中的最新区块之前最近的N个区块的哈希值,N为正整数。
可选的,所述提议模块701,包括:
第一确定模块,确定需要提议的交易集合;
第二确定模块,确定所述第一共识节点维护的第一前区块哈希,所述第一前区块哈希为所述第一共识节点维护的分布式账本中的最新区块之前最近的N个区块的哈希值,N为正整数;
处理模块,基于交易集合和所述第一前区块哈希,生成提议摘要并发起共识提议。
可选的,所述提议模块701,包括:
第三确定模块,确定需要提议的交易集合;
第四确定模块,确定所述第一共识节点维护的第一前区块哈希,所述第一前区块哈希为所述第一共识节点维护的分布式账本中的最新区块之前最近的N个区块的哈希值,N为正整数;
处理模块,基于所述第一前区块哈希,生成提议摘要,并基于提议摘要和所述交易集合发起共识提议。
可选的,所述第一前区块哈希为所述第一共识节点维护的分布式账本中的最新区块的上一个区块的哈希值。
可选的,所述第一提议摘要基于所述第一前区块哈希和所述第一共识节点确定的交易集合的第一交易哈希生成;
其中,所述共识提议还包括需要提议的交易集合。
可选的,所述第一交易哈希为所述第一共识节点确定的所述交易集合对应的默克尔树的根哈希值。
图8为本说明书另一实施例提供的基于拜占庭容错算法的区块链的共识装置的结构示意图,参见图8,所述装置可以包括:
接收模块801,接收联盟链的第一共识节点发起的共识提议,所述共识提议包括第一提议摘要,所述第一提议摘要基于所述第一共识节点维护的第一前区块哈希生成,所述第一前区块哈希为所述第一共识节点维护的分布式账本中的最新区块之前最近的N个区块的哈希值,N为正整数;
响应模块802,响应所述共识提议,基于所述联盟链的第二共识节点维护的第二前区块哈希,生成第二提议摘要,所述第二前区块哈希为所述第二共识节点维护的分布式账本中的最新区块之前最近的N个区块的哈希值,N为正整数;
处理模块803,若检测到所述第一提议摘要和所述第二提议摘要不匹配,则不参与针对所述共识提议的共识;反之,则参与针对所述共识提议的共识。
可选的,所述第二前区块哈希为所述第二共识节点维护的分布式账本中的最新区块的上一个区块的哈希值。
可选的,所述共识提议还包括需要提议的交易集合,响应模块802,基于所述共识提议中的交易集合的第二交易哈希和所述第二前区块哈希,生成第二提议摘要。
可选的,所述第二交易哈希为所述第二共识节点确定的所述共识提议中的交易集合对应的默克尔树的根哈希值。
可选的,所述第一提议摘要携带所述第一交易哈希,响应模块802若检测到所述第一交易哈希和所述第二交易哈希不匹配,则不参与针对所述共识提议的共识;若检测到所述第一交易哈希和所述第二交易哈希相匹配,则继续执行生成所述第二提议摘要的步骤。
可选的,处理模块803,若检测到所述第一提议摘要和所述第二提议摘要相匹配,则参与针对所述共识提议的共识。
由于图7和图8对应的装置实施例与上述方法实施例相似,装置实施例中的相关内容已详述在方法实施例中,故,此处不再展开说明。基于此,本系统通过在共识协议中引入了对前区块哈希进行共识的功能,使得节点能够及时判断自身或者发起共识的节点是否发生分叉,从而决策是否参与共识,进而保证参与共识的节点都是基于一致的前区块下进行的共识,避免加剧区块分叉情况。另外,应当注意的是,在本说明书的装置的各个部件中,根据其要实现的功能而对其中的部件进行了逻辑划分,但是,本说明书不受限于此,可以根据需要对各个部件进行重新划分或者组合。
图9为本说明书一实施例提供的一种电子设备的结构示意图,参见图9,该电子设备包括处理器、内部总线、网络接口、内存以及非易失性存储器,当然还可能包括其他业务所需要的硬件。处理器从非易失性存储器中读取对应的计算机程序到内存中然后运行,在逻辑层面上形成基于拜占庭容错算法的区块链的共识装置。当然,除了软件实现方式之外,本说明书并不排除其他实现方式,比如逻辑器件抑或软硬件结合的方式等等,也就是说以下处理流程的执行主体并不限定于各个逻辑单元,也可以是硬件或逻辑器件。
网络接口、处理器和存储器可以通过总线系统相互连接。总线可以是ISA(Industry Standard Architecture,工业标准体系结构)总线、PCI(PeripheralComponent Interconnect,外设部件互连标准)总线或EISA(Extended Industry StandardArchitecture,扩展工业标准结构)总线等。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图9中仅用一个双向箭头表示,但并不表示仅有一根总线或一种类型的总线。
存储器用于存放程序。具体地,程序可以包括程序代码,所述程序代码包括计算机操作指令。存储器可以包括只读存储器和随机存取存储器,并向处理器提供指令和数据。存储器可能包含高速随机存取存储器(Random-Access Memory,RAM),也可能还包括非易失性存储器(non-volatile memory),例如至少1个磁盘存储器。
处理器,用于执行所述存储器存放的程序,并具体执行:
联盟链的第一共识节点发起共识提议,所述共识提议包括第一提议摘要,所述第一提议摘要基于所述第一共识节点维护的第一前区块哈希生成;
其中,所述第一前区块哈希为所述第一共识节点维护的分布式账本中的最新区块之前最近的N个区块的哈希值,N为正整数。
或者,
联盟链的第二共识节点接收所述联盟链的第一共识节点发起的共识提议,所述共识提议包括第一提议摘要,所述第一提议摘要基于所述第一共识节点维护的第一前区块哈希生成,所述第一前区块哈希为所述第一共识节点维护的分布式账本中的最新区块之前最近的N个区块的哈希值,N为正整数;
响应所述共识提议,基于所述第二共识节点维护的第二前区块哈希,生成第二提议摘要,所述第二前区块哈希为所述第二共识节点维护的分布式账本中的最新区块之前最近的N个区块的哈希值,N为正整数;
若检测到所述第一提议摘要和所述第二提议摘要不匹配,则不参与针对所述共识提议的共识;反之,则参与针对所述共识提议的共识。
上述如本说明书图7-8所示实施例揭示的基于拜占庭容错算法的区块链的共识装置或管理者(Master)节点执行的方法可以应用于处理器中,或者由处理器实现。处理器可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器可以是通用处理器,包括中央处理器(Central Processing Unit,CPU)、网络处理器(Network Processor,NP)等;还可以是数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本说明书实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本说明书实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器,处理器读取存储器中的信息,结合其硬件完成上述方法的步骤。
基于拜占庭容错算法的区块链的共识装置还可执行图1-6的方法,并实现管理者节点执行的方法。
基于相同的发明创造,本说明书实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质存储一个或多个程序,所述一个或多个程序当被包括多个应用程序的电子设备执行时,使得所述电子设备执行图1-6对应的实施例提供的基于拜占庭容错算法的区块链的共识方法。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
本领域内的技术人员应明白,本说明书的实施例可提供为方法、系统、或计算机程序产品。因此,本说明书可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本说明书可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本说明书是参照根据本说明书实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器 (CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器 (RAM) 和/或非易失性内存等形式,如只读存储器 (ROM) 或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存 (PRAM)、静态随机存取存储器 (SRAM)、动态随机存取存储器 (DRAM)、其他类型的随机存取存储器 (RAM)、只读存储器 (ROM)、电可擦除可编程只读存储器 (EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘 (DVD) 或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体 (transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
本领域技术人员应明白,本说明书的实施例可提供为方法、系统或计算机程序产品。因此,本说明书可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本说明书可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
以上所述仅为本说明书的实施例而已,并不用于限制本说明书。对于本领域技术人员来说,本说明书可以有各种更改和变化。凡在本说明书的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本说明书的权利要求范围之内。
Claims (13)
1.一种基于拜占庭容错算法的区块链的共识方法,包括:
联盟链的第一共识节点发起共识提议,所述共识提议包括第一提议摘要,所述第一提议摘要基于所述第一共识节点维护的第一前区块哈希生成;
所述联盟链的第二共识节点响应所述共识提议,基于所述第二共识节点维护的第二前区块哈希,生成第二提议摘要;
所述第二共识节点若检测到所述第一提议摘要和所述第二提议摘要不匹配,则不参与共识;
其中,所述第一前区块哈希和所述第二前区块哈希分别为所述第一共识节点和所述第二共识节点维护的分布式账本中的最新区块之前最近的N个区块的哈希值,N为正整数;
其中,所述第一提议摘要基于所述第一前区块哈希和所述第一共识节点需要提议的交易集合的第一交易哈希生成;
其中,所述共识提议还包括需要提议的交易集合,所述基于所述第二共识节点维护的第二前区块哈希,生成第二提议摘要,包括:
基于所述共识提议中的交易集合的第二交易哈希和所述第二前区块哈希,生成第二提议摘要。
2.根据权利要求1所述的方法,
所述第一前区块哈希为所述第一共识节点维护的分布式账本中的最新区块的上一个区块的哈希值;
所述第二前区块哈希为所述第二共识节点维护的分布式账本中的最新区块的上一个区块的哈希值。
3.根据权利要求1所述的方法,
所述第一交易哈希为所述第一共识节点确定的所述交易集合对应的默克尔树的根哈希值;
所述第二交易哈希为所述第二共识节点确定的所述共识提议中的交易集合对应的默克尔树的根哈希值。
4.根据权利要求1所述的方法,所述第一提议摘要携带所述第一交易哈希,则生成第二提议摘要之前,方法还包括:
若检测到所述第一交易哈希和所述第二交易哈希不匹配,则不参与共识;
若检测到所述第一交易哈希和所述第二交易哈希相匹配,则继续执行生成所述第二提议摘要的步骤。
5.一种基于拜占庭容错算法的区块链的共识方法,包括:
联盟链的第一共识节点发起共识提议,所述共识提议包括第一提议摘要,所述第一提议摘要基于所述第一共识节点维护的第一前区块哈希生成;
所述联盟链的第二共识节点响应所述共识提议,基于所述第二共识节点维护的第二前区块哈希,生成第二提议摘要;
所述第二共识节点若检测到所述第一提议摘要和所述第二提议摘要匹配,则参与共识;
其中,所述第一前区块哈希和所述第二前区块哈希分别为所述第一共识节点和所述第二共识节点维护的分布式账本中的最新区块之前最近的N个区块的哈希值,N为正整数;
其中,所述第一提议摘要基于所述第一前区块哈希和所述第一共识节点需要提议的交易集合的第一交易哈希生成;
其中,所述共识提议还包括需要提议的交易集合,所述基于所述第二共识节点维护的第二前区块哈希,生成第二提议摘要,包括:
基于所述共识提议中的交易集合的第二交易哈希和所述第二前区块哈希,生成第二提议摘要。
6.根据权利要求5所述的方法,
所述第一前区块哈希为所述第一共识节点维护的分布式账本中的最新区块的上一个区块的哈希值;
所述第二前区块哈希为所述第二共识节点维护的分布式账本中的最新区块的上一个区块的哈希值。
7.根据权利要求5所述的方法,
所述第一交易哈希为所述第一共识节点确定的所述交易集合对应的默克尔树的根哈希值;
所述第二交易哈希为所述第二共识节点确定的所述共识提议中的交易集合对应的默克尔树的根哈希值。
8.根据权利要求5所述的方法,
所述第一提议摘要携带所述第一交易哈希,则生成第二提议摘要之前,方法还包括:
若检测到所述第一交易哈希和所述第二交易哈希不匹配,则不参与共识;
若检测到所述第一交易哈希和所述第二交易哈希相匹配,则继续执行生成所述第二提议摘要的步骤。
9.根据权利要求5所述的方法,还包括:
所述第二共识节点若检测到所述第一提议摘要和所述第二提议摘要不匹配,则不参与共识。
10.一种基于拜占庭容错算法的区块链的共识系统,包括:第一共识节点和第二共识节点,其中:
所述第一共识节点,发起共识提议,所述共识提议包括第一提议摘要,所述第一提议摘要基于所述第一共识节点维护的第一前区块哈希生成,所述第一提议摘要基于所述第一前区块哈希和所述第一共识节点需要提议的交易集合的第一交易哈希生成,所述共识提议还包括需要提议的交易集合;
所述第二共识节点,响应所述共识提议,基于所述第二共识节点维护的第二前区块哈希,生成第二提议摘要;若检测到所述第一提议摘要和所述第二提议摘要不匹配,则不参与共识;反之,则参与共识;
所述基于所述第二共识节点维护的第二前区块哈希,生成第二提议摘要,包括:
基于所述共识提议中的交易集合的第二交易哈希和所述第二前区块哈希,生成第二提议摘要;
其中,所述第一前区块哈希和所述第二前区块哈希分别为所述第一共识节点和所述第二共识节点维护的分布式账本中的最新区块之前最近的N个区块的哈希值,N为正整数。
11.一种基于拜占庭容错算法的区块链的共识装置,包括:
接收模块,接收联盟链的第一共识节点发起的共识提议,所述共识提议包括第一提议摘要,所述第一提议摘要基于所述第一共识节点维护的第一前区块哈希生成,所述第一前区块哈希为所述第一共识节点维护的分布式账本中的最新区块之前最近的N个区块的哈希值,N为正整数;
响应模块,响应所述共识提议,基于所述联盟链的第二共识节点维护的第二前区块哈希,生成第二提议摘要,所述第二前区块哈希为所述第二共识节点维护的分布式账本中的最新区块之前最近的N个区块的哈希值,N为正整数;
处理模块,若检测到所述第一提议摘要和所述第二提议摘要不匹配,则不参与共识;反之,则参与共识;
其中,所述第一提议摘要基于所述第一前区块哈希和所述第一共识节点需要提议的交易集合的第一交易哈希生成;
其中,所述共识提议还包括需要提议的交易集合,所述接收模块,基于所述共识提议中的交易集合的第二交易哈希和所述第二前区块哈希,生成第二提议摘要。
12. 一种电子设备,包括:
处理器;以及
被安排成存储计算机可执行指令的存储器,所述可执行指令在被执行时使所述处理器执行以下操作:
接收联盟链的第一共识节点发起的共识提议,所述共识提议包括第一提议摘要,所述第一提议摘要基于所述第一共识节点维护的第一前区块哈希生成,所述第一前区块哈希为所述第一共识节点维护的分布式账本中的最新区块之前最近的N个区块的哈希值,N为正整数;
响应所述共识提议,基于所述联盟链的第二共识节点维护的第二前区块哈希,生成第二提议摘要,所述第二前区块哈希为所述第二共识节点维护的分布式账本中的最新区块之前最近的N个区块的哈希值,N为正整数;
若检测到所述第一提议摘要和所述第二提议摘要不匹配,则不参与共识;反之,则参与共识;
其中,所述第一提议摘要基于所述第一前区块哈希和所述第一共识节点需要提议的交易集合的第一交易哈希生成;
其中,所述共识提议还包括需要提议的交易集合,所述基于所述第二共识节点维护的第二前区块哈希,生成第二提议摘要,包括:
基于所述共识提议中的交易集合的第二交易哈希和所述第二前区块哈希,生成第二提议摘要。
13.一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如下操作:
接收联盟链的第一共识节点发起的共识提议,所述共识提议包括第一提议摘要,所述第一提议摘要基于所述第一共识节点维护的第一前区块哈希生成,所述第一前区块哈希为所述第一共识节点维护的分布式账本中的最新区块之前最近的N个区块的哈希值,N为正整数;
响应所述共识提议,基于所述联盟链的第二共识节点维护的第二前区块哈希,生成第二提议摘要,所述第二前区块哈希为所述第二共识节点维护的分布式账本中的最新区块之前最近的N个区块的哈希值,N为正整数;
若检测到所述第一提议摘要和所述第二提议摘要不匹配,则不参与共识;反之,则参与共识;
其中,所述第一提议摘要基于所述第一前区块哈希和所述第一共识节点需要提议的交易集合的第一交易哈希生成;
其中,所述共识提议还包括需要提议的交易集合,所述基于所述第二共识节点维护的第二前区块哈希,生成第二提议摘要,包括:
基于所述共识提议中的交易集合的第二交易哈希和所述第二前区块哈希,生成第二提议摘要。
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010630539.0A CN111523901B (zh) | 2020-07-03 | 2020-07-03 | 基于拜占庭容错算法的区块链的共识方法、装置及系统 |
CN202110142930.0A CN112700248B (zh) | 2020-07-03 | 2020-07-03 | 基于拜占庭容错算法的区块链的共识方法、装置及系统 |
US17/354,101 US11874820B2 (en) | 2020-07-03 | 2021-06-22 | Consensus method, apparatus, and system for blockchain based on byzantine fault tolerance algorithm |
EP21181533.7A EP3933644A1 (en) | 2020-07-03 | 2021-06-24 | Consensus method, apparatus, and system for blockchain based on byzantine fault tolerance algorithm |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010630539.0A CN111523901B (zh) | 2020-07-03 | 2020-07-03 | 基于拜占庭容错算法的区块链的共识方法、装置及系统 |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110142930.0A Division CN112700248B (zh) | 2020-07-03 | 2020-07-03 | 基于拜占庭容错算法的区块链的共识方法、装置及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111523901A CN111523901A (zh) | 2020-08-11 |
CN111523901B true CN111523901B (zh) | 2020-12-04 |
Family
ID=71910157
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010630539.0A Active CN111523901B (zh) | 2020-07-03 | 2020-07-03 | 基于拜占庭容错算法的区块链的共识方法、装置及系统 |
CN202110142930.0A Active CN112700248B (zh) | 2020-07-03 | 2020-07-03 | 基于拜占庭容错算法的区块链的共识方法、装置及系统 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110142930.0A Active CN112700248B (zh) | 2020-07-03 | 2020-07-03 | 基于拜占庭容错算法的区块链的共识方法、装置及系统 |
Country Status (3)
Country | Link |
---|---|
US (1) | US11874820B2 (zh) |
EP (1) | EP3933644A1 (zh) |
CN (2) | CN111523901B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112685796B (zh) * | 2021-03-12 | 2021-06-18 | 腾讯科技(深圳)有限公司 | 一种基于区块链的区块共识方法以及相关设备 |
CN112988470B (zh) * | 2021-04-27 | 2021-09-07 | 支付宝(杭州)信息技术有限公司 | 联盟链中的共识方法、共识节点和系统 |
CN115378715A (zh) * | 2022-08-24 | 2022-11-22 | 河北中废通网络技术有限公司 | 一种基于区块链的链式信息加密传递方法、装置 |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20180083786A1 (en) * | 2016-09-22 | 2018-03-22 | Google Inc. | Methods and systems of performing tamper-evident logging using block lattices |
CN106850536B (zh) * | 2016-11-30 | 2020-01-07 | 北京瑞卓喜投科技发展有限公司 | 区块链共识方法及系统 |
CN107196989B (zh) * | 2017-03-21 | 2019-08-09 | 阿里巴巴集团控股有限公司 | 一种业务请求的处理方法及装置 |
CN107040594B (zh) * | 2017-04-12 | 2020-04-10 | 山大地纬软件股份有限公司 | 基于pbft的许可区块链节点准入的方法及装置 |
WO2019142049A1 (en) * | 2018-01-17 | 2019-07-25 | Geeq Corporation | Blockchain methods, nodes, systems and products |
JP7063142B2 (ja) | 2018-06-25 | 2022-05-09 | 日本電信電話株式会社 | 番号管理システム、番号管理方法および番号管理装置 |
CN109766673B (zh) * | 2019-01-18 | 2019-12-10 | 四川大学 | 一种联盟式音视频版权区块链系统及音视频版权上链方法 |
CN109936457B (zh) * | 2019-02-20 | 2022-04-26 | 深圳前海微众银行股份有限公司 | 区块链多方见证方法、装置、设备及计算机可读存储介质 |
EP3701701A4 (en) * | 2019-06-05 | 2020-12-30 | Alibaba Group Holding Limited | CONSENSUS SYSTEM AND PROCESS |
CN110247774A (zh) * | 2019-06-28 | 2019-09-17 | 深圳市网心科技有限公司 | 一种区块链数据的共识方法及相关设备 |
CN110708171B (zh) * | 2019-12-13 | 2020-06-12 | 腾讯科技(深圳)有限公司 | 区块链共识投票方法、装置、设备以及存储介质 |
-
2020
- 2020-07-03 CN CN202010630539.0A patent/CN111523901B/zh active Active
- 2020-07-03 CN CN202110142930.0A patent/CN112700248B/zh active Active
-
2021
- 2021-06-22 US US17/354,101 patent/US11874820B2/en active Active
- 2021-06-24 EP EP21181533.7A patent/EP3933644A1/en active Pending
Also Published As
Publication number | Publication date |
---|---|
US11874820B2 (en) | 2024-01-16 |
EP3933644A1 (en) | 2022-01-05 |
CN112700248B (zh) | 2022-09-02 |
US20220004536A1 (en) | 2022-01-06 |
CN112700248A (zh) | 2021-04-23 |
CN111523901A (zh) | 2020-08-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111523901B (zh) | 基于拜占庭容错算法的区块链的共识方法、装置及系统 | |
TWI714847B (zh) | 區塊鏈共識網路中處理共識請求的方法、裝置和電子設備 | |
Guerraoui et al. | The consensus number of a cryptocurrency | |
EP3934162B1 (en) | Blockchain consensus method and device and electronic equipment | |
CN110020859B (zh) | 一种并行执行的区块链共识方法、装置及电子设备 | |
CN111461887B (zh) | 一种区块链的共识处理方法、装置和电子设备 | |
WO2021036260A1 (zh) | 在区块链中并发执行交易的方法和装置 | |
CN111861482A (zh) | 一种区块链对账方法和系统 | |
CN110674105A (zh) | 一种数据备份方法、系统及服务器 | |
CN112348518A (zh) | 一种区块链交易证明的方法及装置 | |
CN112887436B (zh) | 一种共识方法、共识节点和流水线方式的区块链系统 | |
CN111523900A (zh) | 基于拜占庭容错算法的区块链的共识方法、装置及系统 | |
CN114936092A (zh) | 在区块链中执行交易的方法及区块链的主节点 | |
CN114090179A (zh) | 有状态服务的迁移方法、装置及服务器 | |
CN111522696B (zh) | 区块链共识节点的宕机处理方法、数据持久化方法及硬件 | |
CN110647463B (zh) | 一种恢复测试断点的方法、装置、电子设备 | |
CN112991067B (zh) | 一种区块链共识方法、装置和系统 | |
CN111538715B (zh) | 一种风控方案的迁移方法、装置及电子设备 | |
CN114356768A (zh) | 通过占位符减少交易读写冲突的方法与装置 | |
CN110599139B (zh) | 一种区块链共识算法中的出块方法和装置 | |
CN111737260A (zh) | 一种数据复制一致性检查的方法及系统 | |
CN110837536B (zh) | 一种信息处理方法、装置和存储介质 | |
CN111711537B (zh) | 备用主节点列表更新方法、装置及设备 | |
CN116318973A (zh) | 异步双输出多元共识方法及装置 | |
CN113779155A (zh) | 区块链交易处理方法、装置及设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 40035745 Country of ref document: HK |