CN111401904B - 联盟链中的共识方法和*** - Google Patents
联盟链中的共识方法和*** Download PDFInfo
- Publication number
- CN111401904B CN111401904B CN202010505178.7A CN202010505178A CN111401904B CN 111401904 B CN111401904 B CN 111401904B CN 202010505178 A CN202010505178 A CN 202010505178A CN 111401904 B CN111401904 B CN 111401904B
- Authority
- CN
- China
- Prior art keywords
- transaction
- consensus
- target
- memory pool
- 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
- 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/3829—Payment protocols; Details thereof insuring higher security of transaction involving key management
-
- 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/3825—Use of electronic signatures
-
- 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
- G06Q40/00—Finance; Insurance; Tax strategies; Processing of corporate or income taxes
- G06Q40/04—Trading; Exchange, e.g. stocks, commodities, derivatives or currency exchange
Landscapes
- Business, Economics & Management (AREA)
- Accounting & Taxation (AREA)
- Engineering & Computer Science (AREA)
- Finance (AREA)
- Physics & Mathematics (AREA)
- Strategic Management (AREA)
- General Business, Economics & Management (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Economics (AREA)
- Marketing (AREA)
- Technology Law (AREA)
- Development Economics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本说明书公开了一种联盟链中的共识方法和***,该方法包括:共识主节点从管理的交易内存池中选择目标交易集合生成目标提议并广播至联盟链中的共识备份节点,所述目标提议中包含所述目标交易集合的交易的有序排列构成的根哈希;所述共识主节点通过管理的交易内存池将所述目标交易集合发送至所述联盟链中的共识备份节点,其中,发送的所述目标交易集合的交易排列与构成所述根哈希过程中的所述目标交易集合的交易排列相同;接收到所述目标提议的共识备份节点,确定管理的交易内存池中是否存在与所述目标提议中的根哈希相匹配的所述目标交易集合,以及在确定存在时执行对所述目标提议的共识操作。
Description
技术领域
本文件涉及计算机技术领域,尤其涉及一种联盟链中的共识方法和***。
背景技术
以区块链中的联盟链为例,联盟链一般由联盟指定的节点(validator)共同维护,每个节点有对等的权利,节点间通过分布式共识协议进行交互。但由于联盟链中每个节点是对等的,***整体性能(比如吞吐量)往往不会超过单个节点的性能(吞吐量)上限。这就导致了联盟链的整体性能(也就是吞吐量)有限,进而使得应用场景受限。
目前,为了解决吞吐量低下的问题,很多扩容方案采用分片方案(sharding),即每一个分片是一个单独的链,***数据分布在不同分片中,所有分片合在一起提供整体服务。然而,尽管分片方案可以提升***吞吐量,但同时也引入了分片间交互的问题。
发明内容
本说明书实施例提供了一种联盟链中的共识方法和***,以解决现有的联盟链的整体吞吐量难以提升进而导致整体性能难以提升的问题。
为解决上述技术问题,本说明书实施例是这样实现的:
第一方面,提出了一种联盟链中的共识方法,包括:
共识主节点从管理的交易内存池中选择多个交易集合生成目标提议并广播至联盟链中的共识备份节点,所述目标提议中包含所述多个交易集合的有序排列构成的根哈希,所述多个交易集合包括有序排列的交易;
所述共识主节点通过管理的交易内存池将所述多个交易集合发送至所述联盟链中的共识备份节点,其中,发送的所述多个交易集合的集合排列和集合内交易排列与构成所述根哈希过程中的所述多个交易集合的集合排列和集合内交易排列相同;
接收到所述目标提议的共识备份节点,确定管理的交易内存池中是否存在与所述目标提议中的根哈希相匹配的所述多个交易集合,以及在确定存在时执行对所述目标提议的共识操作。
第二方面,提出了一种联盟链中的共识方法,包括:
共识主节点从管理的交易内存池中选择目标交易集合生成目标提议并广播至联盟链中的共识备份节点,所述目标提议中包含所述目标交易集合的交易的有序排列构成的根哈希;
所述共识主节点通过管理的交易内存池将所述目标交易集合发送至所述联盟链中的共识备份节点,其中,发送的所述目标交易集合的交易排列与构成所述根哈希过程中的所述目标交易集合的交易排列相同;
接收到所述目标提议的共识备份节点,确定管理的交易内存池中是否存在与所述目标提议中的根哈希相匹配的所述目标交易集合,以及在确定存在时执行对所述目标提议的共识操作。
第三方面,提出了一种联盟链***,包括共识主节点和多个共识备份节点,其中:
共识主节点,从管理的交易内存池中选择多个交易集合生成目标提议并广播至联盟链中的共识备份节点,所述目标提议中包含所述多个交易集合的有序排列构成的根哈希,所述多个交易集合包括有序排列的交易;以及通过管理的交易内存池将所述多个交易集合发送至所述联盟链中的共识备份节点,其中,发送的所述多个交易集合的集合排列和集合内交易排列与构成所述根哈希过程中的所述多个交易集合的集合排列和集合内交易排列相同;
接收到所述目标提议的共识备份节点,确定管理的交易内存池中是否存在与所述目标提议中的根哈希相匹配的所述多个交易集合,以及在确定存在时执行对所述目标提议的共识操作。
第四方面,提出了一种联盟链***,包括共识主节点和多个共识备份节点,其中:
共识主节点,从管理的交易内存池中选择目标交易集合生成目标提议并广播至联盟链中的共识备份节点,所述目标提议中包含所述目标交易集合的交易的有序排列构成的根哈希;以及通过管理的交易内存池将所述目标交易集合发送至所述联盟链中的共识备份节点,其中,发送的所述目标交易集合的交易排列与构成所述根哈希过程中的所述目标交易集合的交易排列相同;
接收到所述目标提议的共识备份节点,确定管理的交易内存池中是否存在与所述目标提议中的根哈希相匹配的所述目标交易集合,以及在确定存在时执行对所述目标提议的共识操作。
本说明书实施例采用上述技术方案至少可以达到下述技术效果:
共识主节点能够从管理的交易内存池中选择目标交易集合生成目标提议并广播至联盟链中的共识备份节点,该目标提议中包含目标交易集合的交易的有序排列构成的根哈希;共识主节点通过管理的交易内存池将目标交易集合发送至联盟链中的共识备份节点,其中,发送的目标交易集合的交易排列与构成根哈希过程中的目标交易集合的交易排列相同;接收到目标提议的共识备份节点,确定管理的交易内存池中是否存在与目标提议中的根哈希相匹配的目标交易集合,以及在确定存在时执行对目标提议的共识操作。由于共识主节点发起共识操作时,向共识备份节点传输的是交易集合的根哈希,而不是交易集合的原始数据,这一方面减少了交易传输时占用的带宽;另一方面由于各个节点中的交易内存池还可以横向扩容,也有利于提高共识过程中的吞吐量。
共识主节点能够从管理的交易内存池中选择多个交易集合生成目标提议并广播至联盟链中的共识备份节点,该多个提议中包含多个交易集合的交易的有序排列构成的根哈希,多个交易集合包括有序排列的交易;共识主节点通过管理的交易内存池将多个交易集合发送至联盟链中的共识备份节点,其中,发送的多个交易集合的集合排列和集合内交易排列与构成根哈希过程中的多个交易集合的集合排列和集合内交易排列相同;接收到目标提议的共识备份节点,确定管理的交易内存池中是否存在与目标提议中的根哈希相匹配的多个交易集合,以及在确定存在时执行对目标提议的共识操作。由于共识主节点发起共识操作时,向共识备份节点传输的是交易集合的根哈希,而不是交易集合的原始数据,这一方面减少了交易传输时占用的带宽;另一方面由于各个节点中的交易内存池还可以横向扩容,也有利于提高共识过程中的吞吐量。
附图说明
此处所说明的附图用来提供对本说明书的进一步理解,构成本说明书的一部分,本说明书的示意性实施例及其说明用于解释本说明书,并不构成对本说明书的不当限定。在附图中:
图1为现有技术提供的一种联盟链中处理交易的过程示意图;
图2为本说明书一个实施例提供的一种联盟链中的共识方法的实施流程示意图;
图3为本说明书一个实施例提供的联盟链中的共识方法应用于实际场景中的示意图;
图4为本说明书一个实施例提供的另一种联盟链中的共识方法的实施流程示意图;
图5为本说明书一个实施例提供的一种联盟链***的结构示意图;
图6为本说明书一个实施例提供的一种联盟链***的结构示意图。
具体实施方式
为使本文件的目的、技术方案和优点更加清楚,下面将结合本说明书具体实施例及相应的附图对本说明书技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本文件一部分实施例,而不是全部的实施例。基于本说明书中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本文件保护的范围。
以下结合附图,详细说明本说明书各实施例提供的技术方案。
如背景技术中所述,以联盟链为例,联盟链通常只针对特定群体的成员和有限的第三方,其内部指定多个预选节点(validator)为记账人,每个块的生成由这多个预选节点共同决定,每个预选节点拥有对等的权限。多个预选节点之间通常采用分布式共识协议进行交互,实现对每个要记录到新生成的块中的提议的共识。
目前大多数联盟链通过状态机复制模型(State Machine Replication,SMR)来对收集到的交易进行共识等处理。如图1所示为现有的联盟链中处理交易的过程示意图,在SMR模型中,交易的共识处理包括:1、接收来自客户端的交易,2、对交易进行共识处理,3、状态机执行通过共识后的交易,4、向客户端返回交易的执行结果。显然,在现有的联盟链处理交易的过程中,阶段1和阶段4这两个过程,由于没有涉及到节点间交易的传输,也就不会占用***的传输带宽,因此通常不需要进行扩容。
而阶段2涉及到节点间的交易传输,会占用***的传输带宽,阶段3涉及到交易执行,会耗费***的处理资源,这两个交易的处理阶段都将会成为***扩容的切入点。如果仅对阶段3进行扩容,阶段2将成为***扩容提高***整体性能的瓶颈。因此,如何将阶段2中的数据传输和共识模块进行分离,从根源上解决阶段2是***整体性能提升的单点瓶颈问题,从而确保***任意横向扩展,成为亟待解决的问题。
为解决现有的联盟链的整体吞吐量难以提升进而导致***整体性能难以提升的问题,本说明书实施例提供一种联盟链中的共识方法,共识主节点能够从管理的交易内存池中选择目标交易集合生成目标提议并广播至联盟链中的共识备份节点,该目标提议中包含目标交易集合的交易的有序排列构成的根哈希;共识主节点通过管理的交易内存池将目标交易集合发送至联盟链中的共识备份节点,其中,发送的目标交易集合的交易排列与构成根哈希过程中的目标交易集合的交易排列相同;接收到目标提议的共识备份节点,确定管理的交易内存池中是否存在与目标提议中的根哈希相匹配的目标交易集合,以及在确定存在时执行对目标提议的共识操作。
由于共识主节点发起共识操作时,向共识备份节点传输的是交易集合的根哈希,而不是交易集合的原始数据,这一方面减少了交易传输时占用的带宽;另一方面由于各个节点中的交易内存池还可以横向扩容,也有利于提高共识过程中的吞吐量。
具体地,当共识主节点从管理的交易内存池中选择多个交易集合生成目标提议时,本说明书一个或多个实施例提供的一种联盟链中的共识方法的实现流程示意图如图2所示,包括:
步骤210,共识主节点从管理的交易内存池中选择多个交易集合生成目标提议并广播至联盟链中的共识备份节点,目标提议中包含多个交易集合的有序排列构成的根哈希,多个交易集合包括有序排列的交易。
其中,共识主节点的交易存储池中存储有多个交易集合,当其交易存储池中存储的交易集合有多个时,该多个交易集合既包括收集的来自客户端的交易的集合,也可以包括来自一个或多个共识备份节点转发的交易集合。具体地,共识主节点存储着所属客户端发送的交易集合及至少一个共识备份节点发送的交易集合;共识备份节点,存储着所属客户端发送的至少一个交易集合、该联盟链的其它共识备份节点转发的交易集合,以及共识主节点发送的交易集合。
应理解,该多个交易集合在写入新生成的区块之前,还需对这些交易集合进行共识操作。
可选地,由于这些交易集合均为待写入新生成的区块中的数据,因此,为便于区分不同批次的交易集合,即区分写入不同区块的数据,本说明书实施例中的交易内存池还存储有各个交易集合对应的待写入的区块号。具体地,共识主节点从管理的交易内存池中选择多个交易集合生成目标提议,包括:
共识主节点从管理的交易内存池中选择对应于同一区块号的多个交易集合;
共识主节点基于对应于同一区块号的多个交易集合,生成目标提议。
应理解,对应于同一区块号的交易集合为同一批次的数据,应在一轮共识操作中进行共识。
应理解,为确保交易内存池收集到的来自客户端的交易的集合达到发起共识的条件,本说明书实施例中的共识主节点在发起共识之前,还可以确定收集到的交易集合是否满足预设的交易收集条件。具体地,共识主节点基于所述对应于同一区块号的多个交易集合,生成目标提议,包括:
若共识主节点确定对应于同一区块号的多个交易集合满足预设的交易收集条件,则基于对应于同一区块号的多个交易集合,生成目标提议。
可选地,该预设的交易收集条件包括下述至少一种:
收集的交易数量大于或等于预设数量;
收集交易的周期大于或等于指定的收集周期;
收集的交易大小大于或等于指定容量。
应理解,为了避免交易集合的原始数据的传输占用共识主节点的传输带宽,本说明书实施例中的交易集合的原始数据,即目标提议中的根哈希对应的多个交易集合的原始数据可以由共识主节点的交易内存池将多个交易集合、发送给联盟链中的共识备份节点的交易内存池。具体地,共识主节点通过共识主节点的交易内存池将多个交易集合、发送给联盟链中的共识备份节点的交易内存池,该目标提议中包含有序排列的多个交易集合的有序排列构成的根哈希,该多个交易集合包括有序排列的交易。
可选地,作为一种实施方式,目标提议中携带的还可以是根哈希的签名信息,即共识主节点通过其私钥对根哈希进行签名得到的签名信息。在这种情况下,共识备份节点接收到该目标提议后,可通过配对的公钥对根哈希的签名信息进行解密得到根哈希。
可选地,作为另一种实施方式,目标提议中携带的还可以是多个交易集合中包含的交易的哈希值,比如多个交易集合中包括交易1~交易4,那么目标提议中则可以携带交易1的哈希值、交易2的哈希值、交易3的哈希值和交易4的哈希值。
可选地,共识主节点通过交易内存池向共识备份节点广播携带有根哈希的目标提议,具体还可以通过gosssip(周期性的散播消息)传输的方式向共识备份节点传输携带有根哈希的目标提议。
步骤220,共识主节点通过管理的交易内存池将多个交易集合发送至联盟链中的共识备份节点,其中,发送的多个交易集合的集合排列和集合内交易排列与国产根哈希过程中的多个交易集合的集合排列和集合内交易排列相同。
应理解,为了避免待共识的原始数据即目标提议对应的多个交易集合在节点之间直接进行传输过多地占用共识主节点的网络传输带宽,本说明书实施例中的多个交易集合的原始数据,可以由共识主节点管理的交易内存池将该多个交易集合发送给区块链中的共识备份节点的交易内存池。具体地,共识主节点可调用本节点的交易内存池,将目标提议对应的多个交易集合广播至区块链中的共识备份节点的交易内存池。
其中,为确保目标提议对应的多个交易集合传输到共识备份节点的顺序,以及交易集合中包含的多个交易数据的顺序,从而加快确定与目标提议中的根哈希相匹配的多个交易集合,本说明书实施例中的共识主节点可以通过管理的交易内存池将多个交易集合以序列化的形式发送至联盟链中的共识备份节点。假设共识主节点向共识备份节点传输tx1~tx8,可先将这8个交易进行序列化处理,得到一个传输数据,共识备份节点接收到该tx1~tx8,进行相应的反序列化处理,即可确定这8个交易的顺序。应理解,共识备份节点接收后可以得到有序排列的交易集合,交易集合中的交易也是有序排列的。
当然,还可以采用其它的方式传输。例如,将多个交易集合中的交易分别传输,并传输各交易集合中的交易的有序哈希序列以及多个交易集合的有序哈希序列,通过交易集合内交易的有序哈希序列保证集合内交易的顺序,通过交易集合的有序哈希序列保证交易集合之间的顺序。
步骤230,接收到目标提议的共识备份节点,确定管理的交易内存池中是否存在与目标提议中的根哈希相匹配的多个交易集合,以及在确定存在时执行对目标提议的共识操作。
可选地,为了提高验证效率,目标提议中还携带有待写入的目标提议中的待写入的区块号,接收到目标提议的共识备份节点,确定管理的交易内存池中是否存在与目标提议中的根哈希相匹配的多个交易集合,包括:
接收到目标提议的共识备份节点基于目标提议中携带的待写入的区块号,从管理的交易内存池中获取与待写入的区块号对应的交易集合;
如果接收到目标提议的共识备份节点,获取的与待写入的区块号对应的交易集合的根哈希与目标提议中的根哈希一致,则确定管理的交易内存池中存在与目标提议中的根哈希相匹配的多个交易集合;或者
如果接收到目标提议的共识备份节点,获取的与待写入的区块号对应的交易集合的根哈希与目标提议中的根哈希不一致,则确定管理的交易内存池中不存在与目标提议中的根哈希相匹配的多个交易集合。
应理解,为了能够准确验证共识备份节点中的交易内存池中是否存在与目标提议中的根哈希相匹配的多个交易集合,目标提议中除携带有待写入的目标提议中的待写入的区块号以外,交易内存池中存储的交易集合还应该携带有发送节点的标识,在从共识备份节点的交易内存池中获取与目标提议中的待写入的区块号对应的多个交易集合之后,可以按照交易集合对应的节点标识来生成对应的根哈希。
可选地,在接收到目标提议的共识备份节点确定管理的交易内存池中不存在与目标提议中的根哈希相匹配的多个交易集合之后,为了能够继续进行对目标提议的共识操作,该方法还包括:
接收到目标提议的共识备份节点通过管理的交易内存池、从共识主节点的交易内存池中,获取与待写入的区块号相对应且不在管理的交易内存池中的交易集合;或者
接收到目标提议的共识备份节点通过管理的交易内存池、从已对目标提议达成共识的共识备份节点管理的交易内存池中,获取与待写入的区块号相对应且不在管理的交易内存池中的交易集合。
可选地,为了提高查询漏发交易集合的效率,本说明书实施例中的共识主节点和共识备份节点中还可以维护一个路由信息,该路由信息用于指示共识主节点的交易内存池向哪个共识备份节点发送了对应于哪个区块号的交易集合。具体地,接收到目标提议的共识备份节点通过管理的交易内存池、从共识主节点的交易内存池中,获取与待写入的区块号相对应且不在管理的交易内存池中的交易集合,包括:
接收到目标提议的共识备份节点基于路由信息,从共识主节点中确定漏发的交易集合;
接收到目标提议的共识备份节点通过交易内存池从共识主节点的交易内存池中获取该漏发的交易集合。
可选地,为了保证一定的时效性,接收到目标提议的共识备份节点,确定管理的交易内存池中不存在与目标提议中的根哈希相匹配的所述多个交易集合之后,还包括:
接收到目标提议的共识备份节点,在指定时间段内获取与待写入的区块号相对应且不在管理的交易内存池中的交易集合。
若接收到目标提议的共识备份节点,在指定时间段内未获取到与待写入的区块号相对应且不在管理的交易内存池中的交易集合,则在联盟链中发起视图切换操作。
应理解,为避免在一轮共识操作中耽误过多的时间,而影响后面区块数据的共识操作,本说明书实施例中若接收到目标提议的共识备份节点在指定时间段内通过管理的交易内存池、从共识主节点的交易内存池中未获取到与待写入的区块号相对应且不在管理的交易内存池中的交易集合。
若接收到目标提议的共识备份节点,确定管理的交易内存池中存在与目标提议中的根哈希相匹配的多个交易集合,则执行对目标提议的共识操作。
需要说明的是,由于共识主节点和共识备份节点中的交易内存池是可以横向扩容的,且联盟链中的共识备份节点的数量通常有多个,那么共识主节点和各个共识备份节点中的交易内存池的数量可以相同也可以不同,共识主节点和共识备份节点中的交易内存池数量可以按照实际的性能提升需求增加,当同一节点中的交易内存池的数量为多个时,这多个交易内存池之间的信息是互通的。
可选地,共识主节点中的交易内存池的数量为至少一个;
共识备份节点中的交易内存池的数量为至少一个。
可选地,当共识主节点中的交易内存池的数量为多个时,共识主节点的多个交易内存池之间信息互通;
当共识备份节点中的交易内存池的数量为多个时,共识备份节点的多个交易内存池之间信息互通。
也就是说,当共识主节点或共识备份节点中的交易内存池的数量有多个时,同一节点中的多个交易内存池之间的信息是互通的,具体可以在节点中的控制器或者交易内存池内维护一个交易内存池的路由信息,该交易内存池的路由信息中具体可以存储哪些交易集合存储到了哪个交易内存池中。
比如共识主节点中存储有第一交易集合和第二交易集合,且共识主节点中有两个交易内存池,即交易内存池1和交易内存池2,其中,交易内存池1中存储了第一交易集合,交易内存池2中存储了第二交易集合,那么交易内存池的路由信息则可以存储上述这一映射关系。
需要说明的是,本说明书实施例中的共识算法包括Raft、实用拜占庭容错算法(Practical Byzantine Fault Tolerance,PBFT)、BFT-SMaRt(中文名称:基于拜占庭容错的状态机复制方案的性能改善)和HoneyBadgerBFT(中文名称:蜜罐拜占庭容错算法)中的至少一种。下面以联盟链中的共识算法为PBFT为例,详细描述接收到目标提议的共识备份节点对目标提议进行共识操作的过程。
共识主节点向联盟链中的共识备份节点发送针对目标提议的PRE-PREPARE消息、以及对该PRE-PREPARE消息的签名,该PRE-PREPARE消息的格式为<PRE-PREPARE, v, n, d>,其中v为视图view编号,d为目标提议对应的多个交易集合构成的根哈希,n是要在某一个范围区间内的[h, H];
共识备份节点接收到针对目标提议的PRE-PREPARE消息之后,对该PRE-PREPARE消息进行验证,主要验证以下内容:共识主节点对PRE-PREPARE消息的签名是否正确,其管理的交易内存池中是否存在与d相匹配的多个交易集合,n是否在区间[h, H]内,以及该共识备份节点是否已经收到了一条在同一v下并且编号也是n,但是签名不同的PRE-PREPARE信息;
共识备份节点对接收到的PRE-PREPARE消息验证通过后,向联盟链中的其他节点包括共识主节点发送一条PREPARE消息,格式为<PREPARE, v, n, d, i>消息,v, n, d, m与上述PRE-PREPARE消息内容相同,i是当前共识备份节点的编号,同时对<PREPARE, v, n,d, i>进行签名;
联盟链中的共识主节点和其他共识备份节点接收到该PREPARE消息之后,主要进行以下校验:该PREPARE消息的签名是否正确,接收到该PREPARE消息的节点是否已收到了同一视图view下的n,n是否在区间[h, H]内,以及d是否和已收到的PRE-PREPARE消息中的d相同。如果有至少一项验证不通过,则丢弃该消息;
如果联盟链中的共识主节点和其他共识备份节点接收不少于2f+1个节点的PREPARE消息,且验证通过,则向联盟链中的其他节点发送COMMIT消息以及消息签名,格式为<COMMIT, v, n, d, i>,其中,v, n, d, i与上述PREPARE消息内容相同;
联盟链中的节点接收到该COMMIT消息之后,对该COMMIT消息进行验证,主要校验以下几项:COMMIT消息的签名是否正确,是否已接收到同一视图view下的n,其管理的交易内存池中是否存在与d相匹配的多个交易集合,n是否在区间[h, H]内。
可选地,在接收到所述目标提议的共识备份节点执行对所述目标提议的共识操作之后,若联盟链中的节点接收到来自不少于2f+1个节点针对目标提议的有效验证消息,则生成记录有目标提议对应的多个交易集合的区块;其中,f为联盟链中允许的最大异常节点数量。
应理解,这里所述的联盟链中的节点可以是联盟链中的共识主节点也可以是联盟链中的共识备份节点。
具体地,若联盟链中的节点接收到不少于2f+1个节点发送的COMMIT消息,且均验证通过,则说明当前联盟链中的大部分节点对目标提议已经达成共识,此时则可以在本节点中生成记录有目标提议对应的多个交易集合的区块。
下面以图3所示的联盟链中的共识方法应用于实际场景中的流程示意图,对本说明书实施例提供的方法进行详细说明,假设图3所示的场景示意图为联盟链中的共识主节点和共识备份节点,图3所示仅示出了一个共识备份节点,应理解在实际应用中共识备份节点的数量往往有多个,这里以一个共识备份节点为例,其他共识备份节点的处理与该共识备份节点的处理过程类似,这里将不再赘述。如图3所示,该联盟链中的共识过程包括:
S1,共识主节点中的控制器验证交易内存池中收集的多个交易集合是否满足预设的交易收集条件,比如该多个交易集合中的交易数量是否大于或等于预设数量、该多个交易集合的收集周期是否大于或等于指定的收集周期、和/或该多个交易集合的大小是否大于或等于指定容量,等等。
若共识主节点中的控制器对该多个交易集合的验证通过,则执行S2,否则继续收集来自客户端的交易该交易集合中。该共识主节点中的控制器收集到的交易集合时,还对收集到的交易集合分配待写入的区块号,且该共识主节点中的交易内存池在收集来自客户端交易集合的同时,还会接收来自共识备份节点转发的交易集合,该转发来的交易集合也对应于待写入的区块号。
S2,共识主节点中的控制器从交易内存池中获取对应于同一区块号的交易集合。
如图3所示,由于共识主节点中包括3个交易内存池,至于从哪些交易内存池中获取对应于同一区块号的交易集合,则可从交易内存池的路由信息中获取。
S3,共识主节点中的控制器基于多个交易集合生成根哈希。
S4,共识主节点的共识模块基于该根哈希,在联盟链中发起携带有该根哈希的目标提议,具体可以向共识备份节点的共识模块发送PBFT Pre-prepare消息(假设共识方式为PBFT)。
S5,共识主节点的交易内存池向共识备份节点的交易内存池发送生成该目标提议中的根哈希的交易集合,该目标提议中携带有根哈希和待写入的区块号。
S6,共识备份节点获取来自共识主节点的目标提议中的根哈希和待写入的区块号等数据。
S7,共识备份节点从交易内存池中获取对应于目标提议中的待写入的区块号的交易集合,并基于对应于目标提议中的待写入的区块号的交易集合生成对应的根哈希,验证目标提议中的根哈希是否与对应于目标提议中的待写入的区块号的交易集合生成对应的根哈希是否一致,若一致,则继续执行对目标提议的共识操作,若不一致,则执行S8。
S8,共识备份节点的交易内存池在指定时间段内向共识主节点发送查询与目标提议中的待写入的区块号对应且不在管理的交易内存池中的交易集合。
若共识备份节点在指定时间段内查询到与目标提议中的待写入的区块号对应且不在管理的交易内存池中的交易集合,则执行S7,并在通过验证后继续执行对目标提议的共识操作;而若共识备份节点在指定时间段内没有查询到与目标提议中的待写入的区块号对应且不在管理的交易内存池中的交易集合,则执行视图切换操作。
共识主节点能够从管理的交易内存池中选择多个交易集合生成目标提议并广播至联盟链中的共识备份节点,该多个提议中包含多个交易集合的交易的有序排列构成的根哈希,多个交易集合包括有序排列的交易;共识主节点通过管理的交易内存池将多个交易集合发送至联盟链中的共识备份节点,其中,发送的多个交易集合的集合排列和集合内交易排列与构成根哈希过程中的多个交易集合的集合排列和集合内交易排列相同;接收到目标提议的共识备份节点,确定管理的交易内存池中是否存在与目标提议中的根哈希相匹配的多个交易集合,以及在确定存在时执行对目标提议的共识操作。由于共识主节点发起共识操作时,向共识备份节点传输的是交易集合的根哈希,而不是交易集合的原始数据,这一方面减少了交易传输时占用的带宽;另一方面由于各个节点中的交易内存池还可以横向扩容,也有利于提高共识过程中的吞吐量。
具体地,当共识主节点从管理的交易内存池中选择一个交易集合生成目标提议时,本说明书一个或多个实施例提供的一种联盟链中的共识方法的实现流程示意图如图4所示,包括:
步骤410,共识主节点从管理的交易内存池中选择目标交易集合生成目标提议并广播至联盟链中的共识备份节点,目标提议中包含目标交易集合的交易的有序排列构成的根哈希;
步骤420,共识主节点通过管理的交易内存池将所述目标交易集合发送至联盟链中的共识备份节点,其中,发送的目标交易集合的交易排列与构成根哈希过程中的目标交易集合的交易排列相同;
步骤430,接收到目标提议的共识备份节点,确定管理的交易内存池中是否存在与目标提议中的根哈希相匹配的目标交易集合,以及在确定存在时执行对目标提议的共识操作。
可选地,接收到目标提议的共识备份节点,确定管理的交易内存池中是否存在与目标提议中的根哈希相匹配的目标交易集合之后,该方法还包括:
接收到目标提议的共识备份节点通过管理的交易内存池,从共识主节点的交易内存池中获取与待写入的区块号相对应且不在管理的交易内存池中的交易集合;和/或
接收到目标提议的共识备份节点通过管理的交易内存池,从已对目标提议达成共识的共识备份节点的交易内存池中获取与所述待写入的区块号相对应且不在管理的交易内存池中的交易集合。
可选地,接收到目标提议的共识备份节点,确定管理的交易内存池中不存在与目标提议中的根哈希相匹配的所述多个交易集合之后,所述方法还包括:
接收到目标提议的共识备份节点,在指定时间段内获取与待写入的区块号相对应且不在管理的交易内存池中的交易集合。
可选地,若接收到目标提议的共识备份节点,在指定时间段内未获取到与待写入的区块号相对应且不在管理的交易内存池中的交易集合,则在联盟链中发起视图切换操作。
可选地,共识主节点中的交易内存池的数量为至少一个;
共识备份节点中的交易内存池的数量为至少一个。
可选地,当共识主节点中的交易内存池的数量为多个时,共识主节点的多个交易内存池之间信息互通;
当共识备份节点中的交易内存池的数量为多个时,共识备份节点的多个交易内存池之间信息互通。
可选地,接收到目标提议的共识备份节点执行对目标提议的共识操作之后,所述方法还包括:
若联盟链中的节点接收到来自不少于2f+1个节点针对目标提议的有效验证消息,则生成记录有目标提议对应的多个交易集合的区块;其中,f为联盟链中允许的最大异常节点数量。
图4所示实施例相关步骤的具体实现可参考图2~图3所示实施例中对应的步骤的具体实现,本说明书一个或多个实施例在此不再赘述。
共识主节点能够从管理的交易内存池中选择目标交易集合生成目标提议并广播至联盟链中的共识备份节点,该目标提议中包含目标交易集合的交易的有序排列构成的根哈希;共识主节点通过管理的交易内存池将目标交易集合发送至联盟链中的共识备份节点,其中,发送的目标交易集合的交易排列与构成根哈希过程中的目标交易集合的交易排列相同;接收到目标提议的共识备份节点,确定管理的交易内存池中是否存在与目标提议中的根哈希相匹配的目标交易集合,以及在确定存在时执行对目标提议的共识操作。由于共识主节点发起共识操作时,向共识备份节点传输的是交易集合的根哈希,而不是交易集合的原始数据,这一方面减少了交易传输时占用的带宽;另一方面由于各个节点中的交易内存池还可以横向扩容,也有利于提高共识过程中的吞吐量。
图5是本说明书实施例提供的联盟链***500的结构示意图。请参考图5,在一种软件实施方式中,联盟链***500可包括共识主节点510和多个共识备份节点520,其中:
共识主节点510,从管理的交易内存池中选择多个交易集合生成目标提议并广播至联盟链中的共识备份节点,所述目标提议中包含所述多个交易集合的有序排列构成的根哈希,所述多个交易集合包括有序排列的交易;以及通过管理的交易内存池将所述多个交易集合发送至所述联盟链中的共识备份节点,其中,发送的所述多个交易集合的集合排列和集合内交易排列与构成所述根哈希过程中的所述多个交易集合的集合排列和集合内交易排列相同;
接收到所述目标提议的共识备份节点520,确定管理的交易内存池中是否存在与所述目标提议中的根哈希相匹配的所述多个交易集合,以及在确定存在时执行对所述目标提议的共识操作。
可选地,在一种实施方式中,所述共识主节点510,用于:
从管理的交易内存池中选择对应于同一区块号的多个交易集合;
基于所述对应于同一区块号的多个交易集合,生成目标提议。
可选地,在一种实施方式中,所述共识主节点510,用于:
若确定所述对应于同一区块号的多个交易集合满足预设的交易收集条件,则基于所述对应于同一区块号的多个交易集合,生成目标提议。
可选地,在一种实施方式中,所述预设的交易收集条件包括下述至少一种:
收集的交易数量大于或等于预设数量;
收集交易的周期大于或等于指定的收集周期;
收集的交易大小大于或等于指定容量。
可选地,在一种实施方式中,所述目标提议中还携带有待写入的区块号,接收到所述目标提议的共识备份节点520,用于:
基于所述目标提议中携带的所述待写入的区块号,从管理的交易内存池中获取与所述待写入的区块号对应的交易集合;
如果获取的与所述待写入的区块号对应的交易集合的根哈希与所述目标提议中的根哈希一致,则确定管理的交易内存池中存在与所述目标提议中的根哈希相匹配的所述多个交易集合;或者
如果获取的与所述待写入的区块号对应的交易集合的根哈希与所述目标提议中的根哈希不一致,则确定管理的交易内存池中不存在与所述目标提议中的根哈希相匹配的所述多个交易集合。
可选地,在一种实施方式中,接收到所述目标提议的共识备份节点520,确定管理的交易内存池中不存在与所述目标提议中的根哈希相匹配的所述多个交易集合之后,接收到所述目标提议的共识备份节点520,还用于:
通过管理的交易内存池,从所述共识主节点的交易内存池中获取与所述待写入的区块号相对应且不在管理的交易内存池中的交易集合;和/或
通过管理的交易内存池,从已对所述目标提议达成共识的共识备份节点的交易内存池中获取与所述待写入的区块号相对应且不在管理的交易内存池中的交易集合。
可选地,在一种实施方式中,
若联盟链中的节点510或520接收到来自不少于2f+1个节点针对目标提议的有效验证消息,则生成记录有目标提议对应的多个交易集合的区块;其中,f为联盟链中允许的最大异常节点数量。
接收到所述目标提议的共识备份节点520,确定管理的交易内存池中不存在与所述目标提议中的根哈希相匹配的所述多个交易集合之后,接收到所述目标提议的共识备份节点520,还用于:
在指定时间段内获取与所述待写入的区块号相对应且不在管理的交易内存池中的交易集合。
可选地,在一种实施方式中,所述共识备份节点520,用于:
若在指定时间段内未获取到与所述待写入的区块号相对应且不在管理的交易内存池中的交易集合,则在所述联盟链中发起视图切换操作。
可选地,在一种实施方式中,所述共识主节点中的交易内存池的数量为至少一个;
所述共识备份节点中的交易内存池的数量为至少一个。
可选地,在一种实施方式中,当所述共识主节点中的交易内存池的数量为多个时,所述共识主节点的多个交易内存池之间信息互通;
当所述共识备份节点中的交易内存池的数量为多个时,所述共识备份节点的多个交易内存池之间信息互通。
联盟链***500能够实现图2~图3的方法实施例的方法,具体可参考图2~图3所示实施例的联盟链中的共识方法,不再赘述。
图6是本说明书实施例提供的联盟链***600的结构示意图。请参考图6,在一种软件实施方式中,联盟链***600可包括共识主节点610和多个共识备份节点620,其中:
共识主节点610,从管理的交易内存池中选择目标交易集合生成目标提议并广播至联盟链中的共识备份节点,所述目标提议中包含所述目标交易集合的交易的有序排列构成的根哈希;以及通过管理的交易内存池将所述目标交易集合发送至所述联盟链中的共识备份节点,其中,发送的所述目标交易集合的交易排列与构成所述根哈希过程中的所述目标交易集合的交易排列相同;
接收到所述目标提议的共识备份节点620,确定管理的交易内存池中是否存在与所述目标提议中的根哈希相匹配的所述目标交易集合,以及在确定存在时执行对所述目标提议的共识操作。
可选地,在一种实施方式中,所述目标提议中还携带有待写入的区块号,接收到所述目标提议的共识备份节点620,用于:
基于所述目标提议中携带的所述待写入的区块号,从管理的交易内存池中获取与所述待写入的区块号对应的交易集合;
如果获取的与所述待写入的区块号对应的交易集合的根哈希与所述目标提议中的根哈希一致,则确定管理的交易内存池中存在与所述目标提议中的根哈希相匹配的所述目标交易集合;或者
如果获取的与所述待写入的区块号对应的交易集合的根哈希与所述目标提议中的根哈希不一致,则确定管理的交易内存池中不存在与所述目标提议中的根哈希相匹配的所述目标交易集合。
可选地,在一种实施方式中,接收到所述目标提议的共识备份节点620,用于:
通过管理的交易内存池,从所述共识主节点的交易内存池中获取与所述待写入的区块号相对应且不在管理的交易内存池中的所述目标交易集合;和/或
通过管理的交易内存池,从已对所述目标提议达成共识的共识备份节点的交易内存池中获取与所述待写入的区块号相对应且不在管理的交易内存池中的所述目标交易集合。
可选地,在一种实施方式中,接收到所述目标提议的共识备份节点620,确定管理的交易内存池中不存在与所述目标提议中的根哈希相匹配的所述目标交易集合之后,还用于:
在指定时间段内获取与所述待写入的区块号相对应且不在管理的交易内存池中的所述目标交易集合。
可选地,在一种实施方式中,接收到所述目标提议的共识备份节点620,用于:
在指定时间段内未获取到与所述待写入的区块号相对应且不在管理的交易内存池中的所述目标交易集合,则在所述联盟链中发起视图切换操作。
可选地,在一种实施方式中,所述共识主节点中的交易内存池的数量为至少一个;
所述共识备份节点中的交易内存池的数量为至少一个。
可选地,在一种实施方式中,当所述共识主节点中的交易内存池的数量为多个时,所述共识主节点的多个交易内存池之间信息互通;
当所述共识备份节点中的交易内存池的数量为多个时,所述共识备份节点的多个交易内存池之间信息互通。
可选地,在一种实施方式中,接收到所述目标提议的共识备份节点620,执行对所述目标提议的共识操作之后,
若所述联盟链中的节点610或620,接收到来自不少于2f+1个节点针对所述目标提议的有效验证消息,则生成记录有所述目标提议对应的所述目标交易集合的区块;其中,f为所述联盟链中允许的最大异常节点数量。
联盟链***600能够实现图4的方法实施例的方法,具体可参考图4所示实施例的联盟链中的共识方法,不再赘述。
总之,以上所述仅为本说明书的较佳实施例而已,并非用于限定本说明书的保护范围。凡在本说明书一个或多个实施例的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本说明书一个或多个实施例的保护范围之内。
上述实施例阐明的***、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机。具体的,计算机例如可以为个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任何设备的组合。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于***实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
Claims (20)
1.一种联盟链中的共识方法,包括:
共识主节点从管理的交易内存池中选择多个交易集合生成目标提议并广播至联盟链中的共识备份节点,所述目标提议中包含所述多个交易集合的有序排列构成的根哈希,所述多个交易集合包括有序排列的交易,所述共识主节点不将所述多个交易集合的原始数据广播至所述联盟链中的共识备份节点;
所述共识主节点通过管理的交易内存池将所述多个交易集合发送至所述联盟链中的共识备份节点的交易内存池,其中,发送的所述多个交易集合的集合排列和集合内交易排列与构成所述根哈希过程中的所述多个交易集合的集合排列和集合内交易排列相同;
接收到所述目标提议的共识备份节点,确定管理的交易内存池中是否存在与所述目标提议中的根哈希相匹配的所述多个交易集合,以及在确定存在时执行对所述目标提议的共识操作,所述共识主节点的交易内存池和所述联盟链中的共识备份节点的交易内存池支持横向扩容。
2.如权利要求1所述的方法,所述共识主节点从管理的交易内存池中选择多个交易集合生成目标提议,包括:
所述共识主节点从管理的交易内存池中选择对应于同一区块号的多个交易集合;
所述共识主节点基于所述对应于同一区块号的多个交易集合,生成目标提议。
3.如权利要求2所述的方法,所述共识主节点基于所述对应于同一区块号的多个交易集合,生成目标提议,包括:
若所述共识主节点确定所述对应于同一区块号的多个交易集合满足预设的交易收集条件,则基于所述对应于同一区块号的多个交易集合,生成目标提议。
4.如权利要求3所述的方法,所述目标提议中还携带有待写入的区块号,
接收到所述目标提议的共识备份节点,确定管理的交易内存池中是否存在与所述目标提议中的根哈希相匹配的所述多个交易集合,包括:
接收到所述目标提议的共识备份节点基于所述目标提议中携带的所述待写入的区块号,从管理的交易内存池中获取与所述待写入的区块号对应的交易集合;
如果接收到所述目标提议的共识备份节点,获取的与所述待写入的区块号对应的交易集合的根哈希与所述目标提议中的根哈希一致,则确定管理的交易内存池中存在与所述目标提议中的根哈希相匹配的所述多个交易集合;或者
如果接收到所述目标提议的共识备份节点,获取的与所述待写入的区块号对应的交易集合的根哈希与所述目标提议中的根哈希不一致,则确定管理的交易内存池中不存在与所述目标提议中的根哈希相匹配的所述多个交易集合。
5.如权利要求4所述的方法,接收到所述目标提议的共识备份节点,确定管理的交易内存池中不存在与所述目标提议中的根哈希相匹配的所述多个交易集合之后,所述方法还包括:
接收到所述目标提议的共识备份节点通过管理的交易内存池,从所述共识主节点的交易内存池中获取与所述待写入的区块号相对应且不在管理的交易内存池中的交易集合;和/或
接收到所述目标提议的共识备份节点通过管理的交易内存池,从已对所述目标提议达成共识的共识备份节点的交易内存池中获取与所述待写入的区块号相对应且不在管理的交易内存池中的交易集合。
6.如权利要求4所述的方法,接收到所述目标提议的共识备份节点,确定管理的交易内存池中不存在与所述目标提议中的根哈希相匹配的所述多个交易集合之后,所述方法还包括:
接收到所述目标提议的共识备份节点,在指定时间段内获取与所述待写入的区块号相对应且不在管理的交易内存池中的交易集合。
7.如权利要求6所述的方法,所述方法还包括:
若接收到所述目标提议的共识备份节点,在指定时间段内未获取到与所述待写入的区块号相对应且不在管理的交易内存池中的交易集合,则在所述联盟链中发起视图切换操作。
8.如权利要求1~7中任一所述的方法,
所述共识主节点中的交易内存池的数量为至少一个;
所述共识备份节点中的交易内存池的数量为至少一个。
9.如权利要求8所述的方法,
当所述共识主节点中的交易内存池的数量为多个时,所述共识主节点的多个交易内存池之间信息互通;
当所述共识备份节点中的交易内存池的数量为多个时,所述共识备份节点的多个交易内存池之间信息互通。
10.如权利要求1所述的方法,接收到所述目标提议的共识备份节点执行对所述目标提议的共识操作之后,所述方法还包括:
若所述联盟链中的节点接收到来自不少于2f+1个节点针对所述目标提议的有效验证消息,则生成记录有所述目标提议对应的多个交易集合的区块;其中,f为所述联盟链中允许的最大异常节点数量。
11.一种联盟链中的共识方法,包括:
共识主节点从管理的交易内存池中选择目标交易集合生成目标提议并广播至联盟链中的共识备份节点,所述目标提议中包含所述目标交易集合的交易的有序排列构成的根哈希,所述共识主节点不将多个交易集合的原始数据广播至所述联盟链中的共识备份节点;
所述共识主节点通过管理的交易内存池将所述目标交易集合发送至所述联盟链中的共识备份节点的交易内存池,其中,发送的所述目标交易集合的交易排列与构成所述根哈希过程中的所述目标交易集合的交易排列相同;
接收到所述目标提议的共识备份节点,确定管理的交易内存池中是否存在与所述目标提议中的根哈希相匹配的所述目标交易集合,以及在确定存在时执行对所述目标提议的共识操作,所述共识主节点的交易内存池和所述联盟链中的共识备份节点的交易内存池支持横向扩容。
12.如权利要求11所述的方法,所述目标提议中还携带有待写入的区块号,
接收到所述目标提议的共识备份节点,确定管理的交易内存池中是否存在与所述目标提议中的根哈希相匹配的所述目标交易集合,包括:
接收到所述目标提议的共识备份节点基于所述目标提议中携带的所述待写入的区块号,从管理的交易内存池中获取与所述待写入的区块号对应的交易集合;
如果接收到所述目标提议的共识备份节点,获取的与所述待写入的区块号对应的交易集合的根哈希与所述目标提议中的根哈希一致,则确定管理的交易内存池中存在与所述目标提议中的根哈希相匹配的所述目标交易集合;或者
如果接收到所述目标提议的共识备份节点,获取的与所述待写入的区块号对应的交易集合的根哈希与所述目标提议中的根哈希不一致,则确定管理的交易内存池中不存在与所述目标提议中的根哈希相匹配的所述目标交易集合。
13.如权利要求12所述的方法,接收到所述目标提议的共识备份节点,确定管理的交易内存池中不存在与所述目标提议中的根哈希相匹配的所述目标交易集合之后,所述方法还包括:
接收到所述目标提议的共识备份节点通过管理的交易内存池,从所述共识主节点的交易内存池中获取与所述待写入的区块号相对应且不在管理的交易内存池中的所述目标交易集合;和/或
接收到所述目标提议的共识备份节点通过管理的交易内存池,从已对所述目标提议达成共识的共识备份节点的交易内存池中获取与所述待写入的区块号相对应且不在管理的交易内存池中的所述目标交易集合。
14.如权利要求12所述的方法,接收到所述目标提议的共识备份节点,确定管理的交易内存池中不存在与所述目标提议中的根哈希相匹配的所述目标交易集合之后,所述方法还包括:
接收到所述目标提议的共识备份节点,在指定时间段内获取与所述待写入的区块号相对应且不在管理的交易内存池中的所述目标交易集合。
15.如权利要求14所述的方法,所述方法还包括:
若接收到所述目标提议的共识备份节点,在指定时间段内未获取到与所述待写入的区块号相对应且不在管理的交易内存池中的所述目标交易集合,则在所述联盟链中发起视图切换操作。
16.如权利要求12~15中任一所述的方法,
所述共识主节点中的交易内存池的数量为至少一个;
所述共识备份节点中的交易内存池的数量为至少一个。
17.如权利要求16所述的方法,
当所述共识主节点中的交易内存池的数量为多个时,所述共识主节点的多个交易内存池之间信息互通;
当所述共识备份节点中的交易内存池的数量为多个时,所述共识备份节点的多个交易内存池之间信息互通。
18.如权利要求12所述的方法,接收到所述目标提议的共识备份节点执行对所述目标提议的共识操作之后,所述方法还包括:
若所述联盟链中的节点接收到来自不少于2f+1个节点针对所述目标提议的有效验证消息,则生成记录有所述目标提议对应的所述目标交易集合的区块;其中,f为所述联盟链中允许的最大异常节点数量。
19.一种联盟链***,包括共识主节点和多个共识备份节点,其中:
共识主节点,从管理的交易内存池中选择多个交易集合生成目标提议并广播至联盟链中的共识备份节点,所述目标提议中包含所述多个交易集合的有序排列构成的根哈希,所述多个交易集合包括有序排列的交易;以及通过管理的交易内存池将所述多个交易集合发送至所述联盟链中的共识备份节点,其中,发送的所述多个交易集合的集合排列和集合内交易排列与构成所述根哈希过程中的所述多个交易集合的集合排列和集合内交易排列相同;
接收到所述目标提议的共识备份节点,确定管理的交易内存池中是否存在与所述目标提议中的根哈希相匹配的所述多个交易集合,以及在确定存在时执行对所述目标提议的共识操作,所述共识主节点的交易内存池和所述联盟链中的共识备份节点的交易内存池支持横向扩容。
20.一种联盟链***,包括共识主节点和多个共识备份节点,其中:
共识主节点,从管理的交易内存池中选择目标交易集合生成目标提议并广播至联盟链中的共识备份节点,所述目标提议中包含所述目标交易集合的交易的有序排列构成的根哈希;以及通过管理的交易内存池将所述目标交易集合发送至所述联盟链中的共识备份节点的交易内存池,其中,发送的所述目标交易集合的交易排列与构成所述根哈希过程中的所述目标交易集合的交易排列相同,所述共识主节点不将所述目标交易集合的原始数据广播至所述联盟链中的共识备份节点;
接收到所述目标提议的共识备份节点,确定管理的交易内存池中是否存在与所述目标提议中的根哈希相匹配的所述目标交易集合,以及在确定存在时执行对所述目标提议的共识操作,所述共识主节点的交易内存池和所述联盟链中的共识备份节点的交易内存池支持横向扩容。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111094918.3A CN113657898A (zh) | 2020-06-05 | 2020-06-05 | 联盟链中的共识方法和*** |
CN202010505178.7A CN111401904B (zh) | 2020-06-05 | 2020-06-05 | 联盟链中的共识方法和*** |
PCT/CN2021/097976 WO2021244581A1 (zh) | 2020-06-05 | 2021-06-02 | 联盟链中的共识方法和*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010505178.7A CN111401904B (zh) | 2020-06-05 | 2020-06-05 | 联盟链中的共识方法和*** |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111094918.3A Division CN113657898A (zh) | 2020-06-05 | 2020-06-05 | 联盟链中的共识方法和*** |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111401904A CN111401904A (zh) | 2020-07-10 |
CN111401904B true CN111401904B (zh) | 2021-08-03 |
Family
ID=71431920
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010505178.7A Active CN111401904B (zh) | 2020-06-05 | 2020-06-05 | 联盟链中的共识方法和*** |
CN202111094918.3A Pending CN113657898A (zh) | 2020-06-05 | 2020-06-05 | 联盟链中的共识方法和*** |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111094918.3A Pending CN113657898A (zh) | 2020-06-05 | 2020-06-05 | 联盟链中的共识方法和*** |
Country Status (2)
Country | Link |
---|---|
CN (2) | CN111401904B (zh) |
WO (1) | WO2021244581A1 (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111401904B (zh) * | 2020-06-05 | 2021-08-03 | 支付宝(杭州)信息技术有限公司 | 联盟链中的共识方法和*** |
CN112804087B (zh) * | 2020-12-31 | 2023-07-25 | 北京百度网讯科技有限公司 | 联盟网络的运行实现方法、装置、设备及存储介质 |
CN115185972B (zh) * | 2022-09-13 | 2022-12-16 | 北京大学 | 一种数字对象的存证副本的管理方法与装置 |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101849917B1 (ko) * | 2016-10-13 | 2018-05-31 | 주식회사 코인플러그 | 스마트 컨트랙트 기반의 인증서 서비스를 제공하는 방법 및 이를 이용한 서버 |
CN106529951A (zh) * | 2016-12-30 | 2017-03-22 | 杭州云象网络技术有限公司 | 一种联盟链网络下采用异步方式的节点共识验证方法 |
CN109087098A (zh) * | 2018-07-27 | 2018-12-25 | 杭州复杂美科技有限公司 | 一种许可链的交易处理方法、***、设备和存储介质 |
CN109150598B (zh) * | 2018-08-10 | 2021-09-03 | 上交所技术有限责任公司 | 一种基于块片的bft共识算法带宽使用率改进方法 |
CN109034807B (zh) * | 2018-08-15 | 2021-07-06 | 杭州复杂美科技有限公司 | 一种区块链数据同步方法 |
CN109345386B (zh) * | 2018-08-31 | 2020-04-14 | 阿里巴巴集团控股有限公司 | 基于区块链的交易共识处理方法及装置、电子设备 |
CN109871669B (zh) * | 2019-03-14 | 2023-02-10 | 哈尔滨工程大学 | 一种基于区块链技术的数据共享解决方法 |
CN110430067A (zh) * | 2019-07-15 | 2019-11-08 | 杭州复杂美科技有限公司 | 用于减少区块重复广播的方法和***、设备及存储介质 |
CN110691077B (zh) * | 2019-09-24 | 2021-06-29 | 支付宝(杭州)信息技术有限公司 | 一种联盟链的业务校验方法及联盟链*** |
CN110768822B (zh) * | 2019-09-29 | 2022-08-23 | 南京金宁汇科技有限公司 | 动态升级联盟链组织结构的方法、***及存储介质 |
CN110798308A (zh) * | 2019-10-31 | 2020-02-14 | 支付宝(杭州)信息技术有限公司 | 一种区块链的签名方法和*** |
CN110971684B (zh) * | 2019-11-28 | 2022-09-09 | 北京工业大学 | 一种基于pbft的区块链网络节点负载均衡方法 |
CN111130801A (zh) * | 2019-12-26 | 2020-05-08 | 腾讯科技(深圳)有限公司 | 一种数据处理方法、装置、节点设备及计算机存储介质 |
CN111401904B (zh) * | 2020-06-05 | 2021-08-03 | 支付宝(杭州)信息技术有限公司 | 联盟链中的共识方法和*** |
-
2020
- 2020-06-05 CN CN202010505178.7A patent/CN111401904B/zh active Active
- 2020-06-05 CN CN202111094918.3A patent/CN113657898A/zh active Pending
-
2021
- 2021-06-02 WO PCT/CN2021/097976 patent/WO2021244581A1/zh active Application Filing
Non-Patent Citations (3)
Title |
---|
Libra Protocol: Key Concepts;博客园;《https://www.cnblogs.com/wanghui-garcia/p/11104319.html》;20190701;全文 * |
Libra介绍;简书;《https://www.jianshu.com/p/796331926945》;20190630;全文 * |
共识协议;Libra中文文档;《https://learnblockchain.cn/docs/libra/docs/crates/consensus/》;20190702;全文 * |
Also Published As
Publication number | Publication date |
---|---|
WO2021244581A1 (zh) | 2021-12-09 |
CN113657898A (zh) | 2021-11-16 |
CN111401904A (zh) | 2020-07-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111401904B (zh) | 联盟链中的共识方法和*** | |
CN108681965B (zh) | 离线节点的区块链网络交易处理方法和装置 | |
CN111625593B (zh) | 基于区块链的数据处理方法、装置、计算机设备 | |
US20210328814A1 (en) | Blockchain integrated stations and automatic blockchain construction methods and apparatuses | |
KR102566892B1 (ko) | 블록체인 합의 방법, 디바이스 및 시스템 | |
CN110049087B (zh) | 一种联盟链的可信度验证方法、***、装置及设备 | |
US11444783B2 (en) | Methods and apparatuses for processing transactions based on blockchain integrated station | |
CN112887160B (zh) | 区块链一体机及其多节点部署方法、装置、存储介质 | |
CN110263035A (zh) | 基于区块链的数据存储、查询方法及装置和电子设备 | |
CN108769230B (zh) | 交易数据存储方法、装置、服务器及存储介质 | |
CN110597918B (zh) | 一种账户管理方法、装置及计算机可读存储介质 | |
WO2020199711A1 (zh) | 数据存储方法、***、装置及设备 | |
US20210326863A1 (en) | Methods and apparatuses for identifying replay transaction based on blockchain integrated station | |
US11463553B2 (en) | Methods and apparatuses for identifying to-be-filtered transaction based on blockchain integrated station | |
CN109167660B (zh) | 选举代表节点设备方法、装置、计算机设备及存储介质 | |
US11665234B2 (en) | Methods and apparatuses for synchronizing data based on blockchain integrated station | |
CN111275555B (zh) | 区块链交易处理方法、交易节点以及区块链*** | |
EP3937053A1 (en) | Methods and apparatuses for transferring transaction based on dedicated blockchain node device | |
CN110046901B (zh) | 联盟链的可信度验证方法、***、装置及设备 | |
CN111600965A (zh) | 区块链中的共识方法和*** | |
CN112734431B (zh) | 查询Fabric区块链账本数据的方法和装置 | |
CN110992035A (zh) | 区块链节点管理方法、装置及*** | |
WO2023050966A1 (zh) | 验证区块链数据 | |
CN110620776B (zh) | 一种数据转移信息传输方法及其装置 | |
CN111526165B (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 | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 40033186 Country of ref document: HK |
|
GR01 | Patent grant | ||
GR01 | Patent grant |