CN113849564B - 一种区块链的共识方法、共识节点及电子设备 - Google Patents
一种区块链的共识方法、共识节点及电子设备 Download PDFInfo
- Publication number
- CN113849564B CN113849564B CN202111124498.9A CN202111124498A CN113849564B CN 113849564 B CN113849564 B CN 113849564B CN 202111124498 A CN202111124498 A CN 202111124498A CN 113849564 B CN113849564 B CN 113849564B
- Authority
- CN
- China
- Prior art keywords
- consensus
- data blocks
- transaction set
- transaction
- master 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
- 238000000034 method Methods 0.000 title claims abstract description 47
- 230000005540 biological transmission Effects 0.000 claims description 38
- 238000004590 computer program Methods 0.000 claims description 17
- 230000002085 persistent effect Effects 0.000 claims description 4
- 230000008569 process Effects 0.000 description 6
- 238000010586 diagram Methods 0.000 description 5
- 230000006870 function Effects 0.000 description 5
- 238000012545 processing Methods 0.000 description 5
- 230000007246 mechanism Effects 0.000 description 4
- 238000012986 modification Methods 0.000 description 4
- 230000004048 modification Effects 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 3
- 239000002360 explosive Substances 0.000 description 2
- 238000012423 maintenance Methods 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 230000002688 persistence Effects 0.000 description 2
- 108091035707 Consensus sequence Proteins 0.000 description 1
- 230000004075 alteration Effects 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 238000011022 operating instruction Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
Classifications
-
- 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
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/542—Event management; Broadcasting; Multicasting; Notifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
-
- 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
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/26—Special purpose or proprietary protocols or architectures
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Business, Economics & Management (AREA)
- Computing Systems (AREA)
- Databases & Information Systems (AREA)
- Finance (AREA)
- Accounting & Taxation (AREA)
- Signal Processing (AREA)
- Computer Networks & Wireless Communication (AREA)
- Computer Security & Cryptography (AREA)
- Multimedia (AREA)
- Data Mining & Analysis (AREA)
- Development Economics (AREA)
- Economics (AREA)
- Marketing (AREA)
- Strategic Management (AREA)
- Technology Law (AREA)
- General Business, Economics & Management (AREA)
- Detection And Prevention Of Errors In Transmission (AREA)
- Hardware Redundancy (AREA)
Abstract
本说明书实施例提供一种区块链的共识方法、共识节点及电子设备。方法包括:共识主节点对自身交易池中的第一交易集执行RBC协议,使用纠删码算法将第一交易集拆分成与区块链的共识节点相对应的N个数据块,并基于Rval消息向各共识备份节点发送对应的数据块。共识备份节点执行RBC协议,通过Echo消息将从Rval消息接收到的数据块转发至其他共识备份节点,并在接收到N‑2f个Echo消息后,基于纠删码算法将已接收到的数据块还原成第一交易集。共识主节点基于PBFT协议发起针对第一交易集的所有数据块的默克尔树证明的共识提议。共识主节点和共识备份节点从各自第一交易集中匹配出达成共识的默克尔树证明所对应的交易,以对其执行写块操作。
Description
技术领域
本文件涉及数据处理技术领域,尤其涉及一种区块链的共识方法、共识节点及电子设备。
背景技术
基于区块链的特性,在主备节点工作模式的共识协议中,每轮共识提议的提议数据是由共识主节点打包并同步传输给区块链的各共识备份节点。假设区块链的共识节点数量为N,针对一轮共识提议,共识主节点需要发送N-1份提议数据,这对于共识主节点的网络带宽产生了极大开销。
随着未来区块链业务的爆发性增长,要获得更高的吞吐量,就需要单位时间内达成更多数据的共识,对共识主节点来讲负担更大,导致共识效率反而下降。为此,当前亟需一种能够降低共识主节点发起共识提议所开销的带宽的技术方案。
发明内容
本说明书实施例目的是提供一种区块链的共识方法、共识节点及电子设备,能够以较小的共识主节点侧的带宽开销,完成区块链共识。
为了实现上述目的,本说明书实施例是这样实现的:
第一方面,提供一种区块链的共识方法,包括:
区块链的共识主节点对所述共识主节点的交易池中的第一交易集执行可靠广播传输RBC协议,以使用纠删码算法将所述第一交易集拆分成与所述区块链的共识节点相对应的N个数据块,并基于Rval消息向所述区块链的各共识备份节点发送对应的数据块,其中,所述第一交易集拆分成的数据块对应有基于所述纠删码算法计算得到的默克尔树证明,N为所述区块链的共识节点数量;
所述共识备份节点执行所述RBC协议,以通过Echo消息将从Rval消息接收到的相对应的数据块转发至其他共识备份节点,并在接收到N-2f个Echo消息后,基于所述纠删码算法将已接收到的数据块还原成所述第一交易集,其中,f为所述区块链的共识节点容错数;
所述共识主节点在对所述第一交易集执行完所述RBC协议后,对所述第一交易集的所有数据块的默克尔树证明执行实用拜占庭PBFT协议,以发起针对所述第一交易集的所有数据块的默克尔树证明的共识提议;
所述共识备份节点基于所述PBFT协议响应所述共识提议,以完成针对所述第一交易集的所有数据块的默克尔树证明的共识;
在所述第一交易集的所有数据块的默克尔树证明完成共识后,所述共识主节点和所述共识备份节点从各自的所述第一交易集中匹配出达成共识的默克尔树证明所对应的交易,以对匹配出的交易执行写块操作。
第二方面,提供一种区块链的共识方法,包括:
共识主节点对所述共识主节点的交易池中的第一交易集执行可靠广播传输RBC协议,以使用纠删码算法将所述第一交易集拆分成与所述区块链的共识节点相对应的N个数据块,并基于Rval消息向所述区块链的各共识备份节点发送对应的数据块,使得共识备份节点执行所述RBC协议,通过Echo消息将从Rval消息接收到的相对应的数据块转发至其他共识备份节点,并在接收到N-f个Echo消息后向所述区块链广播Ready消息,以及在接收到2f+1个Ready消息后,基于所述纠删码算法将已接收到的数据块还原成所述第一交易集,其中,所述第一交易集拆分成的数据块对应有基于所述纠删码算法计算得到的默克尔树证明,N为所述区块链的共识节点数量,f为所述区块链的共识节点容错数;
所述共识主节点在对所述第一交易集执行完所述RBC协议后,对所述第一交易集的所有数据块的默克尔树证明执行实用拜占庭PBFT协议,以发起针对所述第一交易集的所有数据块的默克尔树证明的共识提议,使得所述共识备份节点基于所述PBFT协议响应所述共识提议,以完成针对所述第一交易集的所有数据块的默克尔树证明的共识;
在所述第一交易集的所有数据块的默克尔树证明完成共识后,所述共识主节点从所述第一交易集中匹配出达成共识的默克尔树证明所对应的交易,以对匹配出的交易执行写块操作。
第三方面,提供一种区块链的共识方法,包括:
区块链的共识备份节点接收所述区块链的共识主节点执行RBC协议时所发送的所述共识备份节点相对应的数据块,其中,所述共识备份节点相对应的数据块是所述共识主节点对所述共识主节点的交易池中的第一交易集执行可靠广播传输RBC协议,以使用纠删码算法将所述第一交易集拆分成与所述区块链的共识节点相对应的N个数据块,并基于Rval消息向所述共识备份节点发送的;
所述共识备份节点执行所述RBC协议,通过Echo消息将从Rval消息接收到的相对应的数据块转发至其他共识备份节点,并在接收到N-2f个Echo消息后,基于所述纠删码算法将已接收到的数据块还原成所述第一交易集,其中,f为所述区块链的共识节点容错数;
在所述共识主节点对所述第一交易集的所有数据块的默克尔树证明执行实用拜占庭PBFT协议,以发起针对所述第一交易集的所有数据块的默克尔树证明的共识提议后,所述共识备份节点基于所述PBFT协议响应所述共识提议,以完成针对所述第一交易集的所有数据块的默克尔树证明的共识;
在所述第一交易集的所有数据块的默克尔树证明完成共识后,所述共识备份节点从还原的所述第一交易集中匹配出达成共识的默克尔树证明所对应的交易,以对匹配出的交易执行写块操作。
第四方面,提供一种区块链的共识节点,包括:
第一RBC执行模块,共识主节点对所述共识主节点的交易池中的第一交易集执行可靠广播传输RBC协议,以使用纠删码算法将所述第一交易集拆分成与所述区块链的共识节点相对应的N个数据块,并基于Rval消息向所述区块链的各共识备份节点发送对应的数据块,使得共识备份节点执行所述RBC协议,通过Echo消息将从Rval消息接收到的相对应的数据块转发至其他共识备份节点,并在接收到N-2f个Echo消息后,基于所述纠删码算法将已接收到的数据块还原成所述第一交易集,其中,所述第一交易集拆分成的数据块对应有基于所述纠删码算法计算得到的默克尔树证明,N为所述区块链的共识节点数量,f为所述区块链的共识节点容错数;
第一PBFT执行模块,所述共识主节点在对所述第一交易集执行完所述RBC协议后,对所述第一交易集的所有数据块的默克尔树证明执行实用拜占庭PBFT协议,以发起针对所述第一交易集的所有数据块的默克尔树证明的共识提议,使得所述共识备份节点基于所述PBFT协议响应所述共识提议,以完成针对所述第一交易集的所有数据块的默克尔树证明的共识;
第一写块模块,在所述第一交易集的所有数据块的默克尔树证明完成共识后,所述共识主节点从所述第一交易集中匹配出达成共识的默克尔树证明所对应的交易,以对匹配出的交易执行写块操作。
第五方面,提供一种电子设备包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行:
对共识主节点的交易池中的第一交易集执行可靠广播传输RBC协议,以使用纠删码算法将所述第一交易集拆分成与所述区块链的共识节点相对应的N个数据块,并基于Rval消息向所述区块链的各共识备份节点发送对应的数据块,使得共识备份节点执行所述RBC协议,通过Echo消息将从Rval消息接收到的相对应的数据块转发至其他共识备份节点,并在接收到N-2f个Echo消息后,基于所述纠删码算法将已接收到的数据块还原成所述第一交易集,其中,所述第一交易集拆分成的数据块对应有基于所述纠删码算法计算得到的默克尔树证明,N为所述区块链的共识节点数量,f为所述区块链的共识节点容错数;
在对所述第一交易集执行完所述RBC协议后,对所述第一交易集的所有数据块的默克尔树证明执行实用拜占庭PBFT协议,以发起针对所述第一交易集的所有数据块的默克尔树证明的共识提议,使得所述共识备份节点基于所述PBFT协议响应所述共识提议,以完成针对所述第一交易集的所有数据块的默克尔树证明的共识;
在所述第一交易集的所有数据块的默克尔树证明完成共识后,从所述第一交易集中匹配出达成共识的默克尔树证明所对应的交易,以对匹配出的交易执行写块操作。
第六方面,提供一种算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如下步骤:
对共识主节点的交易池中的第一交易集执行可靠广播传输RBC协议,以使用纠删码算法将所述第一交易集拆分成与所述区块链的共识节点相对应的N个数据块,并基于Rval消息向所述区块链的各共识备份节点发送对应的数据块,使得共识备份节点执行所述RBC协议,通过Echo消息将从Rval消息接收到的相对应的数据块转发至其他共识备份节点,并在接收到N-2f个Echo消息后,基于所述纠删码算法将已接收到的数据块还原成所述第一交易集,其中,所述第一交易集拆分成的数据块对应有基于所述纠删码算法计算得到的默克尔树证明,N为所述区块链的共识节点数量,f为所述区块链的共识节点容错数;
在对所述第一交易集执行完所述RBC协议后,对所述第一交易集的所有数据块的默克尔树证明执行实用拜占庭PBFT协议,以发起针对所述第一交易集的所有数据块的默克尔树证明的共识提议,使得所述共识备份节点基于所述PBFT协议响应所述共识提议,以完成针对所述第一交易集的所有数据块的默克尔树证明的共识;
在所述第一交易集的所有数据块的默克尔树证明完成共识后,从所述第一交易集中匹配出达成共识的默克尔树证明所对应的交易,以对匹配出的交易执行写块操作。
第七方面,提供一种区块链的共识节点,包括:
接收模块,接收所述区块链的共识主节点执行RBC协议时所发送的共识备份节点相对应的数据块,其中,所述共识备份节点相对应的数据块是所述共识主节点对所述共识主节点的交易池中的第一交易集执行可靠广播传输RBC协议,以使用纠删码算法将所述第一交易集拆分成与所述区块链的共识节点相对应的N个数据块,并基于Rval消息向所述共识备份节点发送的;
第二RBC执行模块,执行所述RBC协议,通过Echo消息将从Rval消息接收到的相对应的数据块转发至其他共识备份节点,并在接收到N-2f个Echo消息后,基于纠删码算法将已接收到的数据块还原成所述第一交易集,基于所述纠删码算法将已接收到的数据块还原成所述第一交易集,其中,f为所述区块链的共识节点容错数;
第二PBFT执行模块,在所述共识主节点对所述第一交易集的所有数据块的默克尔树证明执行实用拜占庭PBFT协议,以发起针对所述第一交易集的所有数据块的默克尔树证明的共识提议后,基于所述PBFT协议响应所述共识提议,以完成针对所述第一交易集的所有数据块的默克尔树证明的共识;
第二写块模块,在所述第一交易集的所有数据块的默克尔树证明完成共识后,所述共识备份节点从还原的所述第一交易集中匹配出达成共识的默克尔树证明所对应的交易,以对匹配出的交易执行写块操作。
第八方面,提供一种电子设备包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行:
接收所述区块链的共识主节点执行RBC协议时所发送的共识备份节点相对应的数据块,其中,所述共识备份节点相对应的数据块是所述共识主节点对所述共识主节点的交易池中的第一交易集执行可靠广播传输RBC协议,以使用纠删码算法将所述第一交易集拆分成与所述区块链的共识节点相对应的N个数据块,并基于Rval消息向所述共识备份节点发送的;
执行所述RBC协议,通过Echo消息将从Rval消息接收到的相对应的数据块转发至其他共识备份节点,并在接收到N-f个Echo消息后向所述区块链广播Ready消息,以及在接收到2f+1个Ready消息后,基于所述纠删码算法将已接收到的数据块还原成所述第一交易集,其中,f为所述区块链的共识节点容错数;
在所述共识主节点对所述第一交易集的所有数据块的默克尔树证明执行实用拜占庭PBFT协议,以发起针对所述第一交易集的所有数据块的默克尔树证明的共识提议后,基于所述PBFT协议响应所述共识提议,以完成针对所述第一交易集的所有数据块的默克尔树证明的共识;
在所述第一交易集的所有数据块的默克尔树证明完成共识后,从还原的所述第一交易集中匹配出达成共识的默克尔树证明所对应的交易,以对匹配出的交易执行写块操作。
第九方面,提供一种算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如下步骤:
接收所述区块链的共识主节点执行RBC协议时所发送的共识备份节点相对应的数据块,其中,所述共识备份节点相对应的数据块是所述共识主节点对所述共识主节点的交易池中的第一交易集执行可靠广播传输RBC协议,以使用纠删码算法将所述第一交易集拆分成与所述区块链的共识节点相对应的N个数据块,并基于Rval消息向所述共识备份节点发送的;
执行所述RBC协议,通过Echo消息将从Rval消息接收到的相对应的数据块转发至其他共识备份节点,并在接收到N-f个Echo消息后向所述区块链广播Ready消息,以及在接收到2f+1个Ready消息后,基于所述纠删码算法将已接收到的数据块还原成所述第一交易集,其中,f为所述区块链的共识节点容错数;
在所述共识主节点对所述第一交易集的所有数据块的默克尔树证明执行实用拜占庭PBFT协议,以发起针对所述第一交易集的所有数据块的默克尔树证明的共识提议后,基于所述PBFT协议响应所述共识提议,以完成针对所述第一交易集的所有数据块的默克尔树证明的共识;
在所述第一交易集的所有数据块的默克尔树证明完成共识后,从还原的所述第一交易集中匹配出达成共识的默克尔树证明所对应的交易,以对匹配出的交易执行写块操作。
本说明书实施例的方案通过RBC协议和PBFT协议实现共识。在RBC协议阶段,共识主节点利用RBC协议的纠删码传输机制,将作为提议数据的交易集拆分成与共识备份节点相对应的数据块,并将拆分成的数据块发送至对应的共识备份节点,再由共识备份节点相互转发从而分摊了提议数据的传输,以较小的共识主节点的网络带宽和存储空间开销,实现了传输容错性。在PBFT协议阶段,共识主节点以RBC协议结果的数据块的默克尔树证明作为共识对象发起共识提议,从而将达成共识的默克尔树证明匹配回相对应的交易完成写块操作,由于默克尔树证明的数据量相对较小,可以有效减小PBFT协议的执行时间,进而提高共识效率。
附图说明
为了更清楚地说明本说明书实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本说明书实施例中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本说明书实施例提供的区块链的共识方法的流程示意图。
图2为本说明书实施例提供的共识节点的第一种结构示意图。
图3为本说明书实施例提供的共识节点的第二种结构示意图。
图4为本说明书实施例提供的电子设备的结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本说明书中的技术方案,下面将结合本说明书实施例中的附图,对本说明书实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本说明书一部分实施例,而不是全部的实施例。基于本说明书中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都应当属于本说明书保护的范围。
如前所述,在目前主备节点工作模式的区块链共识协议中,每轮共识提议的提议数据是由共识主节点打包并同步传输给区块链的各共识备份节点。假设区块链的共识节点数量为N,针对一轮共识提议,共识主节点需要发送N-1份提议数据,这对于共识主节点的网络带宽产生了极大开销。随着未来区块链业务的爆发性增长,要获得更高的吞吐量,就需要单位时间内达成更多数据的共识,对共识主节点来讲负担更大,导致共识效率反而下降。有鉴于此,本文件旨在提出一种以较小的共识主节点带宽开销就能实现区块链共识的技术方案,以适应未来区块链业务增长的需求。
图1是本说明书实施例区块链的共识方法的流程图。图1所示的方法可以由下文相对应的装置执行,包括如下步骤:
S102,区块链的共识主节点对共识主节点的交易池中的第一交易集执行可靠广播传输RBC协议,以使用纠删码算法将第一交易集拆分成与区块链的共识节点相对应的N个数据块,并基于Rval消息向区块链的各共识备份节点发送对应的数据块,其中,第一交易集拆分成的数据块对应有基于纠删码算法计算得到的默克尔树证明,N为区块链的共识节点数量。
纠删码(erasure coding,EC)是一种数据容错保护方法,它将数据分割成片段,把冗余数据块扩展、编码,并将其存储在不同的位置,比如磁盘、存储节点或者其它地理位置。从数据函数角度来说,纠删码提供的保护可以用下面公式:x=k+y来表示。变量x”代表原始数据或符号的值。变量“y”代表故障后添加的提供保护的额外或冗余符号的值。变量“x”代表纠删码过程后创建的符号的总值。举个例子来说,在一个EC 10/16的配置中,会有6个额外的符号(变量m)被添加到10个原始符号(变量k)中。这16个数据片段(变量n)可以遍布16个驱动器、节点或地理位置中,而原始文件可以从10个验证片段中重建。也就是说,即使有6个驱动器、节点或者地理位置丢失或不可用,而原始文件还是可以恢复。可以看出,纠删码仅需要数据量较少的冗余就能实现数据的还原。
在本说明书实施例中,共识主节点执行RBC协议是为了使用纠删码技术将自身交易池中需要共识的第一交易集(后续作为提议数据)同步给区块链汇总的共识备份节点。基于纠删码技术,共识主节点在将自身交易池中的交易集拆分成与各共识节点相对应数据块后,只需向每个共识备份节点发送该其共识备份节点自身所对应的数据块。也就是说,本次同步过程中,共识主节点发送的数据量只是一份第一交易集的数据量。
S104,共识备份节点执行RBC协议,以通过Echo消息将从Rval消息接收到的相对应的数据块转发至其他共识备份节点,并在接收到N-2f个Echo消息后,基于纠删码算法将已接收到的数据块还原成第一交易集,其中,f为区块链的共识节点容错数。
应理解,本说明书实施例的共识主节点在执行RBC协议,只通过Rval消息向共识备份节点提供该共识备份节点所对应的数据块。为了使共识备份节点获得完整的第一交易集,本步骤中,区块链的各共识备份节点还需要通过RBC协议的Echo消息将身对应的数据块转发至其他共识备份节点。当任意共识备份节点接收到N-2f个Echo消息后(表示以收集到了基于纠删码算法足以还原回第一交易集的数据块),尝试还原第一交集以实现第一交集的数据同步。
可以看出,在基于RBC协议以使用纠删码算法传输第一交易集的过程中,共识备份节点也消耗网络带宽辅助共识主节点转发自身对应的数据块,从而分担了共识主节点侧的传输压力。
S106,共识主节点在对第一交易集执行完RBC协议后,对第一交易集的所有数据块的默克尔树证明执行实用拜占庭PBFT协议,以发起针对第一交易集的所有数据块的默克尔树证明的共识提议。
应理解,第一交易集的所有数据块的默克尔树证明的共识提议。是共识主节点执行RBC协议所产生的,属于RBC协议的执行结果。由于数据块可以由数据量较小的默克尔树证明进行表示,因此共识主节点对第一交易集的所有数据块的默克尔树证明执行PBFT协议时,可以节省PBFT协议传输的数据量。
S108,共识备份节点基于PBFT协议响应上述共识提议,以完成针对第一交易集的所有数据块的默克尔树证明的共识。
应理解,本说明书实施例中,PBFT协议的共识对象由传统的交易集数据更换为默克尔树证明,但共识原理并没有改变,因此可以使用传统的PBFT协议逻辑来完成共识。
S110,在第一交易集的所有数据块的默克尔树证明完成共识后,共识主节点和共识备份节点从各自的第一交易集中匹配出达成共识的默克尔树证明所对应的交易,以对匹配出的交易执行写块操作。
相较于传统的PBFT协议,由于共识对象由交易集数据更换为默克尔树证明,因此PBFT协议结果所确定的是达成共识的默克尔树证明,需要共识主节点和共识备份节点从各自确定交易集中再匹配出相对应的交易,再对匹配出的交易(也理解为达成共识的交易)执行写块操作。
这里应理解是,共识备份节点侧的第一交易集是通过共识主节点执行RBC协议所同步得到的,而共识主节点侧的第一交易集则本身来源于目标共识节点的交易池。
本说明书实施例的方法通过RBC协议和PBFT协议实现共识。在RBC协议阶段,共识主节点利用RBC协议的纠删码传输机制,将作为提议数据的交易集拆分成与共识备份节点相对应的数据块,并将拆分成的数据块发送至对应的共识备份节点,再由共识备份节点相互转发从而分摊了提议数据的传输,以较小的共识主节点的网络带宽和存储空间开销,实现了传输容错性。在PBFT协议阶段,共识主节点以RBC协议结果的数据块的默克尔树证明作为共识对象发起共识提议,从而将达成共识的默克尔树证明匹配回相对应的交易完成写块操作,由于默克尔树证明的数据量相对较小,可以有效减小PBFT协议的执行时间,进而提高共识效率。
下面对本说明书实施例的共识方法进行详细介绍。
本说明书实施例的方法中,区块链的共识节点基于RBC协议+PBFT协议实现交易的共识上链。这里,设置区块链的共识节点数量为N,拜占庭的共识节点容错数量为f,N>=3f+1。对应的共识流程如下:
RBC协议阶段:
共识主节点从共识主节点的交易池中选取若干个待共识的交易,构成第一交易集。
共识主节点使用纠删码算法按照共识顺序,将第一交易集拆分成与区块链的共识节点一一对应的N个有序的数据块。这里,每个数据块均包含有第一交易集中至少一个交易,基于纠删码算法拆分成的数据块对应有哈希值,所有数据块的根哈希构建一个merkle树。
为便于理解,假设区块链设置有包含共识主节点在内的6个共识节点(其余均为共识备份节点),第一交易集中的交易为20个,即tx1至tx20,则第一交易集可以被拆分成6个数据块,即block1至block6。对应地,数据块和交易的对应关系如下:
共识节点1:block 1{tx1,tx2,tx3,tx4}
共识节点2:block 2{tx5,tx6,tx7}
共识节点3:block 3{tx8,tx9,tx10}
共识节点4:block 4{tx11,tx12,tx13}
共识节点5:block 5{tx14,tx15,tx16}
共识节点6:block 6{tx17,tx18,tx19,tx20}
之后,共识主节点Rval消息向区块链的各共识备份节点发送对应的数据块。
这里将共识节点1作为共识主节点。共识节点1向共识节点2发送的Rval消息携带有根哈希、block2和block2对应的默克尔树证明;共识节点1向共识节点3发送的Rval消息携带有根哈希、block3和block3对应的默克尔树证明;……共识节点1向共识节点6发送的Rval消息携带有根哈希、block6和block6对应的默克尔树证明。
之后,共识备份节点在接收到共识主节点的Rval消息后,将Rval消息中的根哈希、数据块block和数据块block对应的默克尔树证明通过Echo消息转发至其他共识备份节点。
比如,共识节点2向共识节点1、3、4、5、6发送携带有根哈希、block2和block2对应的默克尔树证明;共识节点3向共识节点1、2、4、5、6发送携带有根哈希、block3和block3对应的默克尔树证明;……共识节点6向共识节点1、2、3、4、5发送携带有根哈希、block6和block6对应的默克尔树证明。
任意共识备份节点在接收到N-2f个Echo消息后,尝试使用纠删码算法将已接收到的数据块(共识主节点发送的Rval消息中的数据块和其他共识备份节点发送的Echo消息中的数据块)还原回第一交易集,并重构第一交易集的默克尔树,以校验重构的默克尔树与接收到的默克尔树证明是否一致。如果一致,则向区块链广播Ready消息。
此外,在上述基础之上,任意共识备份节点如果从Echo消息和Rval消息中获得数据块不足以还原第一交易集,,也可以向其他共识备份节点获取其他共识备份节点所接收到的Rval消息中的数据块,以尝试还原第一交易集。
之后,针对每个共识节点,当收到f+1个相同的且来自于不同节点的Ready消息时,判断自己是否广播过Ready消息,没有则广播Ready消息;当收到2f+1个来自于不同共识节点的Ready消息时,意味着收到正确的第一交易集,即,共识主节点将自身交易池中的第一交易集正确同步给共识备份节点。
这里,共识主节点本地维护一个共识执行队列,用于存放待共识的默克尔树证明。共识主节点在将第一交易集拆分成N个数据块后,按照将第一交易集拆分成的N个数据块按序添加至共识主节点的共识执行队列中。
在RBC协议阶段结束后,共识主节点从共识执行队列中按序选取默克尔树证明作为共识对象,以发起PBFT协议的共识提议。应理解,如果共识执行队列中的默克尔树证明超出一次共识提议所支持的最大默克尔树证明数量,则共识主节点可以选择发起至少两轮共识提议,来对共识执行队列中的默克尔树证明进行共识。
PBFT协议阶段:
共识主节点将第一交易集的各数据块的默克尔树证明作为提议数据,发起共识提议。
共识过程包括:
共识主节点广播一条pre-prepare消息给各共识备份节点,这个pre-prepare消息主要包含当前共识的视图(view)和共识主节点的摘要(digest),同时还包括第一交易集的各数据块的默克尔树证明。
参与共识的共识备份节点在接收到pre-prepare消息后,检查pre-prepare消息是否合法。比如,校验view、digest和默克尔树证明是否正确。
如果pre-prepare消息合法,那么共识提议在各共识节点上的状态被确定为prepared,共识备份节点将接收到的pre-prepare消息添加到本地Log中,并发送prepare消息给其他共识备份节点。
当所有共识节点中在进入prepared状态后,将自身的校验签名通过commit消息给其他共识节点,并将自己发送的commit消息添加到本地Log中(代表自己的认可)。
当任意共识节点发现有一个quorum(quorum是为了能够确保所有数据一致性要求和容错要求需要的一定数量共识节点的集合)同意编号分配时,它就会广播一条commit消息给其它所有共识节点。与此同时也会陆续收到来自其他共识节点的commit消息。
如果任意共识节点收到了2f+1条commit消息,就表示该共识节点拥有了一个名为committed certificate的证书,本次共识提议在这个共识节点上达成committed状态。此时只通过这一个共识节点,就能断定该请求已经在一整个quorum中到达了committed状态。当共识提议到达commited状态后,说明已经达成全网共识。
共识主节点的共识执行队列中的所有的默克尔树证明完成共识后,共识主节点和共识备份节点从各自的第一交易集中匹配出达成共识的默克尔树证明所对应的交易,以对匹配出的交易执行写块操作。
为方便理解,假设root hash 1和root hash 5的默克尔树证明达成共识,则共识主节点和共识备份节点对root hash 1对应的交易{tx1,tx2,tx3,tx4}和root hsh 5对应的交易{tx14,tx15,tx16}执行写块操作,也就是交易{tx1,tx2,tx3,tx4 tx14,tx15,tx16}完成上链。
以上是对一轮RBC协议+PBFT协议的介绍。应理解,当第一交易集的所有数据块的默克尔树证明完成共识后,若区块链未切换视图(即未更换共识主节点),则共识主节点还可以继续对共识主节点的交易池中第二交易集执行新一轮的RBC协议(第二交易集为共识主节点的交易池中尚未被共识主节点执行过RBC协议的交易集),并后续针对第二交易集拆分而成的各数据块的默克尔树证明发起PBFT协议的共识提议,以完成第二交易集的上链。
此外,在上述基础之上,共识主节点可以对共识主节点本地的共识执行队列进行数据持久化,如果共识主节点发生宕机,则可以在重启后基于共识主节点的持久化数据,将共识主节点的共识执行队列恢复至重启前的状态。
以上是对本说明书实施例的方法的介绍。应理解,在不脱离本文上述原理基础之上,还可以进行适当的变化,这些变化也应视为本说明书实施例的保护范围。
与上述图1所示共识方法相对应地,本说明书实施例还提供一种区块链的共识节点。图2是本说明书实施例共识节点200的结构图,包括:
第一RBC执行模块210,共识主节点对所述共识主节点的交易池中的第一交易集执行可靠广播传输RBC协议,以使用纠删码算法将所述第一交易集拆分成与所述区块链的共识节点相对应的N个数据块,并基于Rval消息向所述区块链的各共识备份节点发送对应的数据块,使得共识备份节点执行所述RBC协议,通过Echo消息将从Rval消息接收到的相对应的数据块转发至其他共识备份节点,并在接收到N-2f个Echo消息后,基于所述纠删码算法将已接收到的数据块还原成所述第一交易集,其中,所述第一交易集拆分成的数据块对应有基于所述纠删码算法计算得到的默克尔树证明,N为所述区块链的共识节点数量,f为所述区块链的共识节点容错数;
第一PBFT执行模块220,所述共识主节点在对所述第一交易集执行完所述RBC协议后,对所述第一交易集的所有数据块的默克尔树证明执行实用拜占庭PBFT协议,以发起针对所述第一交易集的所有数据块的默克尔树证明的共识提议,使得所述共识备份节点基于所述PBFT协议响应所述共识提议,以完成针对所述第一交易集的所有数据块的默克尔树证明的共识;
第一写块模块230,在所述第一交易集的所有数据块的默克尔树证明完成共识后,所述共识主节点从所述第一交易集中匹配出达成共识的默克尔树证明所对应的交易,以对匹配出的交易执行写块操作。
本说明书实施例的共识节点通过RBC协议和PBFT协议实现共识。在RBC协议阶段,利用RBC协议的纠删码传输机制,将作为提议数据的交易集拆分成与共识备份节点相对应的数据块,并将拆分成的数据块发送至对应的共识备份节点,再由共识备份节点相互转发从而分摊了提议数据的传输,以较小的共识主节点的网络带宽和存储空间开销,实现了传输容错性。在PBFT协议阶段,共识主节点以RBC协议结果的数据块的默克尔树证明作为共识对象发起共识提议,从而将达成共识的默克尔树证明匹配回相对应的交易完成写块操作,由于默克尔树证明的数据量相对较小,可以有效减小PBFT协议的执行时间,进而提高共识效率。
可选地,本说明书实施例的共识节点还包括:
队列维护模块,在第一RBC执行模块210使用纠删码算法将所述第一交易集拆分成与所述区块链的共识节点相对应的N个数据块后,将所述第一交易集拆分成的N个数据块按序添加至所述共识主节点的共识执行队列中;对应地,第一PBFT执行模块220可以从共识执行队列中按序选取所述第一交易集的数据块的默克尔树证明,以发起至少一轮的共识提议,直至所述第一交易集的所有数据块的默克尔树证明完成共识。
可选地,第一RBC执行模块210和第一PBFT执行模块220为串行关系。
在所述第一交易集的所有数据块的默克尔树证明完成共识后,若所述区块链未切换视图,第一RBC执行模块210对共识主节点的交易池中的第二交易集执行新一轮的RBC协议,其中,所述第二交易集是指所述共识主节点的交易池中尚未被所述共识主节点执行过所述RBC协议的交易集。
可选地,所述共识主节点的共识执行队列作为所述共识主节点的持久化数据。若共识主节点发生重启,则上述队列维护模块还可以基于所述共识主节点的持久化数据,将所述共识主节点的共识执行队列恢复至重启前的状态。
可选地,所述共识主节点在对所述第一交易集的所有数据块的默克尔树证明执行所述PBFT协议时,基于所述PBFT协议的Pre-prepare消息,将作为本轮共识对象的默克尔树证明发送至其他共识节点。
显然,本说明书实施例的共识节点可以作为上述图1所示的方法中共识主节点的执行主体,能够实现该共识主节点在图1所示的方法中对应的功能。由于原理相同,本文不再赘述。
与上述图1所示共识方法相对应地,本说明书实施例还提供一种区块链的共识节点。图3是本说明书实施例共识节点300的结构图,包括:
接收模块310,接收所述区块链的共识主节点执行RBC协议时所发送的共识备份节点相对应的数据块,其中,所述共识备份节点相对应的数据块是所述共识主节点对所述共识主节点的交易池中的第一交易集执行可靠广播传输RBC协议,以使用纠删码算法将所述第一交易集拆分成与所述区块链的共识节点相对应的N个数据块,并基于Rval消息向所述共识备份节点发送的;
第二RBC执行模块320,执行所述RBC协议,通过Echo消息将从Rval消息接收到的相对应的数据块转发至其他共识备份节点,并在接收到N-2f个Echo消息后,基于纠删码算法将已接收到的数据块还原成所述第一交易集,基于所述纠删码算法将已接收到的数据块还原成所述第一交易集,其中,f为所述区块链的共识节点容错数;
第二PBFT执行模块330,在所述共识主节点对所述第一交易集的所有数据块的默克尔树证明执行实用拜占庭PBFT协议,以发起针对所述第一交易集的所有数据块的默克尔树证明的共识提议后,基于所述PBFT协议响应所述共识提议,以完成针对所述第一交易集的所有数据块的默克尔树证明的共识;
第二写块模块340,在所述第一交易集的所有数据块的默克尔树证明完成共识后,所述共识备份节点从还原的所述第一交易集中匹配出达成共识的默克尔树证明所对应的交易,以对匹配出的交易执行写块操作。
本说明书实施例的共识节点通过RBC协议和PBFT协议实现共识。在RBC协议阶段,共识主节点利用RBC协议的纠删码传输机制,将作为提议数据的交易集拆分成与共识备份节点相对应的数据块,并将拆分成的数据块发送至对应的共识备份节点,再由共识备份节点相互转发从而分摊了提议数据的传输,以较小的共识主节点的网络带宽和存储空间开销,实现了传输容错性。在PBFT协议阶段,共识主节点以RBC协议结果的数据块的默克尔树证明作为共识对象发起共识提议,从而将达成共识的默克尔树证明匹配回相对应的交易完成写块操作,由于默克尔树证明的数据量相对较小,可以有效减小PBFT协议的执行时间,进而提高共识效率。
显然,本说明书实施例的共识节点可以作为上述图1所示的方法中共识备份节点的执行主体,因此能够实现该共识备份节点在图1所示方法中对应的功能。由于原理相同,本文不再赘述。
图4是本说明书的一个实施例电子设备的结构示意图。请参考图4,在硬件层面,该电子设备包括处理器,可选地还包括内部总线、网络接口、存储器。其中,存储器可能包含内存,例如高速随机存取存储器(Random-Access Memory,RAM),也可能还包括非易失性存储器(non-volatile memory),例如至少1个磁盘存储器等。当然,该电子设备还可能包括其他业务所需要的硬件。
处理器、网络接口和存储器可以通过内部总线相互连接,该内部总线可以是ISA(Industry Standard Architecture,工业标准体系结构)总线、PCI(PeripheralComponent Interconnect,外设部件互连标准)总线或EISA(Extended Industry StandardArchitecture,扩展工业标准结构)总线等。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图4中仅用一个双向箭头表示,但并不表示仅有一根总线或一种类型的总线。
存储器,用于存放程序。具体地,程序可以包括程序代码,所述程序代码包括计算机操作指令。存储器可以包括内存和非易失性存储器,并向处理器提供指令和数据。
其中,处理器从非易失性存储器中读取对应的计算机程序到内存中然后运行,在逻辑层面上形成区块链的共识装置,该共识装置可以作为区块链的共识主节点,也可以属于共识主节中的部件。处理器,执行存储器所存放的程序,并具体用于执行以下操作:
对共识主节点的交易池中的第一交易集执行可靠广播传输RBC协议,以使用纠删码算法将所述第一交易集拆分成与所述区块链的共识节点相对应的N个数据块,并基于Rval消息向所述区块链的各共识备份节点发送对应的数据块,使得共识备份节点执行所述RBC协议,通过Echo消息将从Rval消息接收到的相对应的数据块转发至其他共识备份节点,并在接收到N-2f个Echo消息后,基于所述纠删码算法将已接收到的数据块还原成所述第一交易集,其中,所述第一交易集拆分成的数据块对应有基于所述纠删码算法计算得到的默克尔树证明,N为所述区块链的共识节点数量,f为所述区块链的共识节点容错数;
在对所述第一交易集执行完所述RBC协议后,对所述第一交易集的所有数据块的默克尔树证明执行实用拜占庭PBFT协议,以发起针对所述第一交易集的所有数据块的默克尔树证明的共识提议,使得所述共识备份节点基于所述PBFT协议响应所述共识提议,以完成针对所述第一交易集的所有数据块的默克尔树证明的共识;
在所述第一交易集的所有数据块的默克尔树证明完成共识后,从所述第一交易集中匹配出达成共识的默克尔树证明所对应的交易,以对匹配出的交易执行写块操作。
或者,处理器从非易失性存储器中读取对应的计算机程序到内存中然后运行,在逻辑层面上形成区块链的共识装置,该共识装置可以作为区块链的共识备份节点,也可以属于共识备份节中的部件。处理器,执行存储器所存放的程序,并具体用于执行以下操作:
接收所述区块链的共识主节点执行RBC协议时所发送的共识备份节点相对应的数据块,其中,所述共识备份节点相对应的数据块是所述共识主节点对所述共识主节点的交易池中的第一交易集执行可靠广播传输RBC协议,以使用纠删码算法将所述第一交易集拆分成与所述区块链的共识节点相对应的N个数据块,并基于Rval消息向所述共识备份节点发送的。
执行所述RBC协议,通过Echo消息将从Rval消息接收到的相对应的数据块转发至其他共识备份节点,并在接收到N-f个Echo消息后向所述区块链广播Ready消息,以及在接收到2f+1个Ready消息后,基于所述纠删码算法将已接收到的数据块还原成所述第一交易集,其中,f为所述区块链的共识节点容错数。
在所述共识主节点对所述第一交易集的所有数据块的默克尔树证明执行实用拜占庭PBFT协议,以发起针对所述第一交易集的所有数据块的默克尔树证明的共识提议后,基于所述PBFT协议响应所述共识提议,以完成针对所述第一交易集的所有数据块的默克尔树证明的共识。
在所述第一交易集的所有数据块的默克尔树证明完成共识后,从还原的所述第一交易集中匹配出达成共识的默克尔树证明所对应的交易,以对匹配出的交易执行写块操作。
上述如本说明书图1所示实施例揭示的共识方法可以应用于处理器中,或者由处理器实现。处理器可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器可以是通用处理器,包括中央处理器(Central Processing Unit,CPU)、网络处理器(Network Processor,NP)等;还可以是数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本说明书实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本说明书实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器,处理器读取存储器中的信息,结合其硬件完成上述方法的步骤。
应理解,本说明书实施例的电子设备可以实现共识主节点或者共识备份节点在图1所示的实施例的功能,本文不再赘述。
当然,除了软件实现方式之外,本说明书的电子设备并不排除其他实现方式,比如逻辑器件抑或软硬件结合的方式等等,也就是说以下处理流程的执行主体并不限定于各个逻辑单元,也可以是硬件或逻辑器件。
此外,本说明书实施例还提出了一种计算机可读存储介质,该计算机可读存储介质存储一个或多个程序,该一个或多个程序包括指令。
其中,上述指令当被包括多个应用程序的便携式电子设备执行时,能够使该便携式电子设备执行图1所示实施例的方法,并具体用于执行共识主节点所对应的以下步骤:
对共识主节点的交易池中的第一交易集执行可靠广播传输RBC协议,以使用纠删码算法将所述第一交易集拆分成与所述区块链的共识节点相对应的N个数据块,并基于Rval消息向所述区块链的各共识备份节点发送对应的数据块,使得共识备份节点执行所述RBC协议,通过Echo消息将从Rval消息接收到的相对应的数据块转发至其他共识备份节点,并在接收到N-2f个Echo消息后,基于所述纠删码算法将已接收到的数据块还原成所述第一交易集,其中,所述第一交易集拆分成的数据块对应有基于所述纠删码算法计算得到的默克尔树证明,N为所述区块链的共识节点数量,f为所述区块链的共识节点容错数。
在对所述第一交易集执行完所述RBC协议后,对所述第一交易集的所有数据块的默克尔树证明执行实用拜占庭PBFT协议,以发起针对所述第一交易集的所有数据块的默克尔树证明的共识提议,使得所述共识备份节点基于所述PBFT协议响应所述共识提议,以完成针对所述第一交易集的所有数据块的默克尔树证明的共识。
在所述第一交易集的所有数据块的默克尔树证明完成共识后,从所述第一交易集中匹配出达成共识的默克尔树证明所对应的交易,以对匹配出的交易执行写块操作。
或者,上述指令当被包括多个应用程序的便携式电子设备执行时,能够使该便携式电子设备执行图1所示实施例的方法,并具体用于执行共识备份节点所对应的以下步骤:
接收所述区块链的共识主节点执行RBC协议时所发送的共识备份节点相对应的数据块,其中,所述共识备份节点相对应的数据块是所述共识主节点对所述共识主节点的交易池中的第一交易集执行可靠广播传输RBC协议,以使用纠删码算法将所述第一交易集拆分成与所述区块链的共识节点相对应的N个数据块,并基于Rval消息向所述共识备份节点发送的。
执行所述RBC协议,通过Echo消息将从Rval消息接收到的相对应的数据块转发至其他共识备份节点,并在接收到N-f个Echo消息后向所述区块链广播Ready消息,以及在接收到2f+1个Ready消息后,基于所述纠删码算法将已接收到的数据块还原成所述第一交易集,其中,f为所述区块链的共识节点容错数。
在所述共识主节点对所述第一交易集的所有数据块的默克尔树证明执行实用拜占庭PBFT协议,以发起针对所述第一交易集的所有数据块的默克尔树证明的共识提议后,基于所述PBFT协议响应所述共识提议,以完成针对所述第一交易集的所有数据块的默克尔树证明的共识。
在所述第一交易集的所有数据块的默克尔树证明完成共识后,从还原的所述第一交易集中匹配出达成共识的默克尔树证明所对应的交易,以对匹配出的交易执行写块操作。
应理解,上述指令当被包括多个应用程序的便携式电子设备执行时,能够使上文所述的共识主节点或者共识备份节点实现图1所示实施例的功能,本文不再赘述。
本领域技术人员应明白,本说明书的实施例可提供为方法、系统或计算机程序产品。因此,本说明书可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本说明书可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
以上仅为本说明书的实施例而已,并不用于限制本说明书。对于本领域技术人员来说,本说明书可以有各种更改和变化。凡在本说明书的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本说明书的权利要求范围之内。此外,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都应当属于本文件的保护范围。
Claims (12)
1.一种区块链的共识方法,包括:
区块链的共识主节点对所述共识主节点的交易池中的第一交易集执行可靠广播传输RBC协议,以使用纠删码算法将所述第一交易集拆分成与所述区块链的共识节点相对应的N个数据块后,将所述第一交易集拆分成的N个数据块按序添加至所述共识主节点的共识执行队列中,并基于Rval消息向所述区块链的各共识备份节点发送对应的数据块,其中,所述第一交易集拆分成的数据块对应有基于所述纠删码算法计算得到的默克尔树证明,N为所述区块链的共识节点数量;
所述共识备份节点执行所述RBC协议,以通过Echo消息将从Rval消息接收到的相对应的数据块转发至其他共识备份节点,并在接收到N-2f个Echo消息后,基于所述纠删码算法将已接收到的数据块还原成所述第一交易集,其中,f为所述区块链的共识节点容错数;
所述共识主节点在对所述第一交易集执行完所述RBC协议后,对所述第一交易集的所有数据块的默克尔树证明执行实用拜占庭PBFT协议,以发起针对所述第一交易集的所有数据块的默克尔树证明的共识提议;
所述共识备份节点基于所述PBFT协议响应所述共识提议,以完成针对所述第一交易集的所有数据块的默克尔树证明的共识;
在所述第一交易集的所有数据块的默克尔树证明完成共识后,所述共识主节点和所述共识备份节点从各自的所述第一交易集中匹配出达成共识的默克尔树证明所对应的交易,以对匹配出的交易执行写块操作,且若所述区块链未切换视图,则所述共识主节点对所述共识主节点的交易池中的第二交易集执行所述RBC协议,其中,所述第二交易集是指所述共识主节点的交易池中尚未被所述共识主节点执行过所述RBC协议的交易集,所述共识主节点串行执行所述RBC协议和所述PBFT协议。
2.根据权利要求1所述的方法, 还包括:
所述共识主节点在对所述第一交易集执行完所述RBC协议后,对所述第一交易集的所有数据块的默克尔树证明执行实用拜占庭PBFT协议,以发起针对所述第一交易集的所有数据块的默克尔树证明的共识提议,包括:
所述共识主节点从所述共识主节点的共识执行队列中按序选取所述第一交易集的数据块的默克尔树证明,以发起至少一轮的共识提议,直至所述第一交易集的所有数据块的默克尔树证明完成共识。
3.根据权利要求2所述的方法,
所述共识主节点的共识执行队列作为所述共识主节点的持久化数据,所述方法还包括:
若所述共识主节点发生重启,则基于所述共识主节点的持久化数据,将所述共识主节点的共识执行队列恢复至重启前的状态。
4.根据权利要求2所述的方法,
所述共识主节点在对所述第一交易集的所有数据块的默克尔树证明执行所述PBFT协议时,基于所述PBFT协议的Pre-prepare消息,将作为本轮共识对象的默克尔树证明发送至其他共识节点。
5.一种区块链的共识方法,包括:
共识主节点对所述共识主节点的交易池中的第一交易集执行可靠广播传输RBC协议,以使用纠删码算法将所述第一交易集拆分成与所述区块链的共识节点相对应的N个数据块后,将所述第一交易集拆分成的N个数据块按序添加至所述共识主节点的共识执行队列中,并基于Rval消息向所述区块链的各共识备份节点发送对应的数据块,使得共识备份节点执行所述RBC协议,通过Echo消息将从Rval消息接收到的相对应的数据块转发至其他共识备份节点,并在接收到N-f个Echo消息后向所述区块链广播Ready消息,以及在接收到2f+1个Ready消息后,基于所述纠删码算法将已接收到的数据块还原成所述第一交易集,其中,所述第一交易集拆分成的数据块对应有基于所述纠删码算法计算得到的默克尔树证明,N为所述区块链的共识节点数量,f为所述区块链的共识节点容错数;
所述共识主节点在对所述第一交易集执行完所述RBC协议后,对所述第一交易集的所有数据块的默克尔树证明执行实用拜占庭PBFT协议,以发起针对所述第一交易集的所有数据块的默克尔树证明的共识提议,使得所述共识备份节点基于所述PBFT协议响应所述共识提议,以完成针对所述第一交易集的所有数据块的默克尔树证明的共识;
在所述第一交易集的所有数据块的默克尔树证明完成共识后,所述共识主节点从所述第一交易集中匹配出达成共识的默克尔树证明所对应的交易,以对匹配出的交易执行写块操作,且若所述区块链未切换视图,则所述共识主节点对所述共识主节点的交易池中的第二交易集执行所述RBC协议,其中,所述第二交易集是指所述共识主节点的交易池中尚未被所述共识主节点执行过所述RBC协议的交易集,所述共识主节点串行执行所述RBC协议和所述PBFT协议。
6.一种区块链的共识方法,包括:
区块链的共识备份节点接收所述区块链的共识主节点执行RBC协议时所发送的所述共识备份节点相对应的数据块,其中,所述共识备份节点相对应的数据块是所述共识主节点对所述共识主节点的交易池中的第一交易集执行可靠广播传输RBC协议,以使用纠删码算法将所述第一交易集拆分成与所述区块链的共识节点相对应的N个数据块后,将所述第一交易集拆分成的N个数据块按序添加至所述共识主节点的共识执行队列中,并基于Rval消息向所述共识备份节点发送的;
所述共识备份节点执行所述RBC协议,通过Echo消息将从Rval消息接收到的相对应的数据块转发至其他共识备份节点,并在接收到N-2f个Echo消息后,基于所述纠删码算法将已接收到的数据块还原成所述第一交易集,其中,f为所述区块链的共识节点容错数;
在所述共识主节点对所述第一交易集的所有数据块的默克尔树证明执行实用拜占庭PBFT协议,以发起针对所述第一交易集的所有数据块的默克尔树证明的共识提议后,所述共识备份节点基于所述PBFT协议响应所述共识提议,以完成针对所述第一交易集的所有数据块的默克尔树证明的共识;
在所述第一交易集的所有数据块的默克尔树证明完成共识后,所述共识备份节点从还原的所述第一交易集中匹配出达成共识的默克尔树证明所对应的交易,以对匹配出的交易执行写块操作;其中,在所述第一交易集的所有数据块的默克尔树证明完成共识后,若所述区块链未切换视图,则所述共识主节点对所述共识主节点的交易池中的第二交易集执行所述RBC协议,所述第二交易集是指所述共识主节点的交易池中尚未被所述共识主节点执行过所述RBC协议的交易集,所述共识主节点串行执行所述RBC协议和所述PBFT协议。
7.一种区块链的共识节点,包括:
第一RBC执行模块,对共识主节点的交易池中的第一交易集执行可靠广播传输RBC协议,以使用纠删码算法将所述第一交易集拆分成与所述区块链的共识节点相对应的N个数据块后,将所述第一交易集拆分成的N个数据块按序添加至所述共识主节点的共识执行队列中,并基于Rval消息向所述区块链的各共识备份节点发送对应的数据块,使得共识备份节点执行所述RBC协议,通过Echo消息将从Rval消息接收到的相对应的数据块转发至其他共识备份节点,并在接收到N-2f个Echo消息后,基于所述纠删码算法将已接收到的数据块还原成所述第一交易集,其中,所述第一交易集拆分成的数据块对应有基于所述纠删码算法计算得到的默克尔树证明,N为所述区块链的共识节点数量,f为所述区块链的共识节点容错数;
第一PBFT执行模块,在对所述第一交易集执行完所述RBC协议后,对所述第一交易集的所有数据块的默克尔树证明执行实用拜占庭PBFT协议,以发起针对所述第一交易集的所有数据块的默克尔树证明的共识提议,使得所述共识备份节点基于所述PBFT协议响应所述共识提议,以完成针对所述第一交易集的所有数据块的默克尔树证明的共识,且在所述第一交易集的所有数据块的默克尔树证明完成共识后,若所述区块链未切换视图,则对所述共识主节点的交易池中的第二交易集执行所述RBC协议,其中,所述第二交易集是指所述共识主节点的交易池中尚未被所述共识主节点执行过所述RBC协议的交易集,所述共识主节点串行执行所述RBC协议和所述PBFT协议;
第一写块模块,在所述第一交易集的所有数据块的默克尔树证明完成共识后,从所述第一交易集中匹配出达成共识的默克尔树证明所对应的交易,以对匹配出的交易执行写块操作。
8.一种电子设备包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行:
对共识主节点的交易池中的第一交易集执行可靠广播传输RBC协议,以使用纠删码算法将所述第一交易集拆分成与区块链的共识节点相对应的N个数据块后,将所述第一交易集拆分成的N个数据块按序添加至所述共识主节点的共识执行队列中,并基于Rval消息向所述区块链的各共识备份节点发送对应的数据块,使得共识备份节点执行所述RBC协议,通过Echo消息将从Rval消息接收到的相对应的数据块转发至其他共识备份节点,并在接收到N-2f个Echo消息后,基于所述纠删码算法将已接收到的数据块还原成所述第一交易集,其中,所述第一交易集拆分成的数据块对应有基于所述纠删码算法计算得到的默克尔树证明,N为所述区块链的共识节点数量,f为所述区块链的共识节点容错数;
在对所述第一交易集执行完所述RBC协议后,对所述第一交易集的所有数据块的默克尔树证明执行实用拜占庭PBFT协议,以发起针对所述第一交易集的所有数据块的默克尔树证明的共识提议,使得所述共识备份节点基于所述PBFT协议响应所述共识提议,以完成针对所述第一交易集的所有数据块的默克尔树证明的共识;
在所述第一交易集的所有数据块的默克尔树证明完成共识后,从所述第一交易集中匹配出达成共识的默克尔树证明所对应的交易,以对匹配出的交易执行写块操作,且若所述区块链未切换视图,则对所述共识主节点的交易池中的第二交易集执行所述RBC协议,其中,所述第二交易集是指所述共识主节点的交易池中尚未被所述共识主节点执行过所述RBC协议的交易集,所述共识主节点串行执行所述RBC协议和所述PBFT协议。
9.一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如下步骤:
对共识主节点的交易池中的第一交易集执行可靠广播传输RBC协议,以使用纠删码算法将所述第一交易集拆分成与区块链的共识节点相对应的N个数据块后,将所述第一交易集拆分成的N个数据块按序添加至所述共识主节点的共识执行队列中,并基于Rval消息向所述区块链的各共识备份节点发送对应的数据块,使得共识备份节点执行所述RBC协议,通过Echo消息将从Rval消息接收到的相对应的数据块转发至其他共识备份节点,并在接收到N-2f个Echo消息后,基于所述纠删码算法将已接收到的数据块还原成所述第一交易集,其中,所述第一交易集拆分成的数据块对应有基于所述纠删码算法计算得到的默克尔树证明,N为所述区块链的共识节点数量,f为所述区块链的共识节点容错数;
在对所述第一交易集执行完所述RBC协议后,对所述第一交易集的所有数据块的默克尔树证明执行实用拜占庭PBFT协议,以发起针对所述第一交易集的所有数据块的默克尔树证明的共识提议,使得所述共识备份节点基于所述PBFT协议响应所述共识提议,以完成针对所述第一交易集的所有数据块的默克尔树证明的共识;
在所述第一交易集的所有数据块的默克尔树证明完成共识后,从所述第一交易集中匹配出达成共识的默克尔树证明所对应的交易,以对匹配出的交易执行写块操作,且若所述区块链未切换视图,则对所述共识主节点的交易池中的第二交易集执行所述RBC协议,其中,所述第二交易集是指所述共识主节点的交易池中尚未被所述共识主节点执行过所述RBC协议的交易集,所述共识主节点串行执行所述RBC协议和所述PBFT协议。
10.一种区块链的共识节点,包括:
接收模块,接收所述区块链的共识主节点执行RBC协议时所发送的共识备份节点相对应的数据块,其中,所述共识备份节点相对应的数据块是所述共识主节点对所述共识主节点的交易池中的第一交易集执行可靠广播传输RBC协议,以使用纠删码算法将所述第一交易集拆分成与所述区块链的共识节点相对应的N个数据块后,将所述第一交易集拆分成的N个数据块按序添加至所述共识主节点的共识执行队列中,并基于Rval消息向所述共识备份节点发送的;
第二RBC执行模块,执行所述RBC协议,通过Echo消息将从Rval消息接收到的相对应的数据块转发至其他共识备份节点,并在接收到N-2f个Echo消息后,基于纠删码算法将已接收到的数据块还原成所述第一交易集,基于所述纠删码算法将已接收到的数据块还原成所述第一交易集,其中,f为所述区块链的共识节点容错数;
第二PBFT执行模块,在所述共识主节点对所述第一交易集的所有数据块的默克尔树证明执行实用拜占庭PBFT协议,以发起针对所述第一交易集的所有数据块的默克尔树证明的共识提议后,基于所述PBFT协议响应所述共识提议,以完成针对所述第一交易集的所有数据块的默克尔树证明的共识;
第二写块模块,在所述第一交易集的所有数据块的默克尔树证明完成共识后,所述共识备份节点从还原的所述第一交易集中匹配出达成共识的默克尔树证明所对应的交易,以对匹配出的交易执行写块操作;其中,在所述第一交易集的所有数据块的默克尔树证明完成共识后,若所述区块链未切换视图,则所述共识主节点对所述共识主节点的交易池中的第二交易集执行所述RBC协议,所述第二交易集是指所述共识主节点的交易池中尚未被所述共识主节点执行过所述RBC协议的交易集,所述共识主节点串行执行所述RBC协议和所述PBFT协议。
11.一种电子设备包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行:
接收区块链的共识主节点执行RBC协议时所发送的共识备份节点相对应的数据块,其中,所述共识备份节点相对应的数据块是所述共识主节点对所述共识主节点的交易池中的第一交易集执行可靠广播传输RBC协议,以使用纠删码算法将所述第一交易集拆分成与所述区块链的共识节点相对应的N个数据块后,将所述第一交易集拆分成的N个数据块按序添加至所述共识主节点的共识执行队列中,并基于Rval消息向所述共识备份节点发送的;
执行所述RBC协议,通过Echo消息将从Rval消息接收到的相对应的数据块转发至其他共识备份节点,并在接收到N-f个Echo消息后向所述区块链广播Ready消息,以及在接收到2f+1个Ready消息后,基于所述纠删码算法将已接收到的数据块还原成所述第一交易集,其中,f为所述区块链的共识节点容错数;
在所述共识主节点对所述第一交易集的所有数据块的默克尔树证明执行实用拜占庭PBFT协议,以发起针对所述第一交易集的所有数据块的默克尔树证明的共识提议后,基于所述PBFT协议响应所述共识提议,以完成针对所述第一交易集的所有数据块的默克尔树证明的共识;
在所述第一交易集的所有数据块的默克尔树证明完成共识后,从还原的所述第一交易集中匹配出达成共识的默克尔树证明所对应的交易,以对匹配出的交易执行写块操作;其中,在所述第一交易集的所有数据块的默克尔树证明完成共识后,若所述区块链未切换视图,则所述共识主节点对所述共识主节点的交易池中的第二交易集执行所述RBC协议,所述第二交易集是指所述共识主节点的交易池中尚未被所述共识主节点执行过所述RBC协议的交易集,所述共识主节点串行执行所述RBC协议和所述PBFT协议。
12.一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如下步骤:
接收区块链的共识主节点执行RBC协议时所发送的共识备份节点相对应的数据块,其中,所述共识备份节点相对应的数据块是所述共识主节点对所述共识主节点的交易池中的第一交易集执行可靠广播传输RBC协议,以使用纠删码算法将所述第一交易集拆分成与所述区块链的共识节点相对应的N个数据块后,将所述第一交易集拆分成的N个数据块按序添加至所述共识主节点的共识执行队列中,并基于Rval消息向所述共识备份节点发送的;
执行所述RBC协议,通过Echo消息将从Rval消息接收到的相对应的数据块转发至其他共识备份节点,并在接收到N-f个Echo消息后向所述区块链广播Ready消息,以及在接收到2f+1个Ready消息后,基于所述纠删码算法将已接收到的数据块还原成所述第一交易集,其中,f为所述区块链的共识节点容错数;
在所述共识主节点对所述第一交易集的所有数据块的默克尔树证明执行实用拜占庭PBFT协议,以发起针对所述第一交易集的所有数据块的默克尔树证明的共识提议后,基于所述PBFT协议响应所述共识提议,以完成针对所述第一交易集的所有数据块的默克尔树证明的共识;
在所述第一交易集的所有数据块的默克尔树证明完成共识后,从还原的所述第一交易集中匹配出达成共识的默克尔树证明所对应的交易,以对匹配出的交易执行写块操作;其中,在所述第一交易集的所有数据块的默克尔树证明完成共识后,若所述区块链未切换视图,则所述共识主节点对所述共识主节点的交易池中的第二交易集执行所述RBC协议,所述第二交易集是指所述共识主节点的交易池中尚未被所述共识主节点执行过所述RBC协议的交易集,所述共识主节点串行执行所述RBC协议和所述PBFT协议。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111124498.9A CN113849564B (zh) | 2021-09-24 | 2021-09-24 | 一种区块链的共识方法、共识节点及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111124498.9A CN113849564B (zh) | 2021-09-24 | 2021-09-24 | 一种区块链的共识方法、共识节点及电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113849564A CN113849564A (zh) | 2021-12-28 |
CN113849564B true CN113849564B (zh) | 2024-05-28 |
Family
ID=78979764
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111124498.9A Active CN113849564B (zh) | 2021-09-24 | 2021-09-24 | 一种区块链的共识方法、共识节点及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113849564B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115208881B (zh) * | 2022-06-02 | 2024-03-26 | 哈尔滨工业大学(深圳) | 区块链的共识方法、设备及存储介质 |
CN117478304B (zh) * | 2023-12-28 | 2024-03-01 | 湖南天河国云科技有限公司 | 区块链管理方法、系统和计算机设备 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109379397A (zh) * | 2018-08-31 | 2019-02-22 | 阿里巴巴集团控股有限公司 | 基于区块链的交易共识处理方法及装置、电子设备 |
KR20190068799A (ko) * | 2017-12-11 | 2019-06-19 | 한국전자통신연구원 | 서비스 존 기반의 계층적 합의 방법 및 장치 |
CN111526217A (zh) * | 2020-07-03 | 2020-08-11 | 支付宝(杭州)信息技术有限公司 | 一种区块链中的共识方法和系统 |
US10873456B1 (en) * | 2019-05-07 | 2020-12-22 | LedgerDomain, LLC | Neural network classifiers for block chain data structures |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10204341B2 (en) * | 2016-05-24 | 2019-02-12 | Mastercard International Incorporated | Method and system for an efficient consensus mechanism for permissioned blockchains using bloom filters and audit guarantees |
WO2020000011A1 (en) * | 2018-06-25 | 2020-01-02 | Commonwealth Scientific And Industrial Research Organisation | Blockchain system and method |
-
2021
- 2021-09-24 CN CN202111124498.9A patent/CN113849564B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20190068799A (ko) * | 2017-12-11 | 2019-06-19 | 한국전자통신연구원 | 서비스 존 기반의 계층적 합의 방법 및 장치 |
CN109379397A (zh) * | 2018-08-31 | 2019-02-22 | 阿里巴巴集团控股有限公司 | 基于区块链的交易共识处理方法及装置、电子设备 |
US10873456B1 (en) * | 2019-05-07 | 2020-12-22 | LedgerDomain, LLC | Neural network classifiers for block chain data structures |
CN111526217A (zh) * | 2020-07-03 | 2020-08-11 | 支付宝(杭州)信息技术有限公司 | 一种区块链中的共识方法和系统 |
Also Published As
Publication number | Publication date |
---|---|
CN113849564A (zh) | 2021-12-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111526219B (zh) | 一种联盟链的共识方法及联盟链系统 | |
EP3934162B1 (en) | Blockchain consensus method and device and electronic equipment | |
CN113849564B (zh) | 一种区块链的共识方法、共识节点及电子设备 | |
CN113852691B (zh) | 一种区块链的共识方法、共识节点及电子设备 | |
CN111475576A (zh) | 基于区块链的分布式数据库存储方法及系统 | |
CN109783014B (zh) | 一种存储数据的方法及装置 | |
CN111130879B (zh) | 一种基于pbft算法的集群异常恢复方法 | |
CN113873030A (zh) | 一种区块链的共识方法、共识节点及电子设备 | |
CN112835743A (zh) | 分布式账本数据存储优化方法、装置、电子设备及介质 | |
CN114900532B (zh) | 电力数据容灾方法、系统、装置、计算机设备和存储介质 | |
CN111522696B (zh) | 区块链共识节点的宕机处理方法、数据持久化方法及硬件 | |
WO2023045533A1 (zh) | 区块链的共识 | |
CN112182113B (zh) | 区块链共识方法、系统、电子设备及存储介质 | |
CN113157450A (zh) | 在区块链系统中执行区块的方法及装置 | |
CN113872961B (zh) | 一种区块链的共识方法、共识节点及电子设备 | |
CN116232893A (zh) | 分布式系统的共识方法、装置、电子设备及存储介质 | |
CN113760519B (zh) | 分布式事务处理方法、装置、系统和电子设备 | |
CN109144773A (zh) | 数据备份的方法、装置及设备 | |
CN118445354A (zh) | 区块链共识方法、装置、计算机设备、介质及产品 | |
WO2023221772A1 (zh) | 基于区块链网络的数据处理方法及相关产品 | |
CN114564335B (zh) | 基于条带合并的局部可修复码冗余度转换方法及存储介质 | |
CN112988461B (zh) | 数据备份方法、边缘节点、数据中心及计算机存储介质 | |
CN112860488B (zh) | 对象的恢复方法和装置、电子设备和存储介质 | |
CN118012960A (zh) | 数据同步方法及设备 | |
CN118964088A (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 |