CN113568974A - 基于区块链系统的分片共识方法、设备以及可读存储介质 - Google Patents
基于区块链系统的分片共识方法、设备以及可读存储介质 Download PDFInfo
- Publication number
- CN113568974A CN113568974A CN202110833532.3A CN202110833532A CN113568974A CN 113568974 A CN113568974 A CN 113568974A CN 202110833532 A CN202110833532 A CN 202110833532A CN 113568974 A CN113568974 A CN 113568974A
- Authority
- CN
- China
- Prior art keywords
- consensus
- transaction
- block
- information
- nodes
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 56
- 239000012634 fragment Substances 0.000 claims abstract description 21
- 238000012163 sequencing technique Methods 0.000 claims abstract description 14
- 238000004590 computer program Methods 0.000 claims description 11
- 238000013467 fragmentation Methods 0.000 claims description 10
- 238000006062 fragmentation reaction Methods 0.000 claims description 10
- 238000012795 verification Methods 0.000 claims description 9
- 238000004364 calculation method Methods 0.000 claims description 2
- 230000007246 mechanism Effects 0.000 abstract description 7
- 238000010586 diagram Methods 0.000 description 14
- 101100268665 Caenorhabditis elegans acc-1 gene Proteins 0.000 description 11
- 101100268670 Caenorhabditis elegans acc-3 gene Proteins 0.000 description 9
- 238000004422 calculation algorithm Methods 0.000 description 8
- 230000008569 process Effects 0.000 description 7
- 238000012545 processing Methods 0.000 description 7
- 230000009467 reduction Effects 0.000 description 7
- 101100268668 Caenorhabditis elegans acc-2 gene Proteins 0.000 description 6
- 101100268671 Caenorhabditis elegans acc-4 gene Proteins 0.000 description 4
- 238000012546 transfer Methods 0.000 description 3
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000007596 consolidation process Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000004806 packaging method and process Methods 0.000 description 1
- 238000012856 packing Methods 0.000 description 1
- 238000004904 shortening Methods 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 238000010200 validation analysis Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Images
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
- G06F16/278—Data partitioning, e.g. horizontal or vertical partitioning
-
- 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/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2255—Hash tables
-
- 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
- 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
-
- 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/12—Accounting
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Business, Economics & Management (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- Accounting & Taxation (AREA)
- Finance (AREA)
- Databases & Information Systems (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Economics (AREA)
- General Business, Economics & Management (AREA)
- Technology Law (AREA)
- Strategic Management (AREA)
- Marketing (AREA)
- Data Mining & Analysis (AREA)
- Development Economics (AREA)
- Multimedia (AREA)
- Computing Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请公开一种基于区块链系统的分片共识方法、设备以及可读存储介质,该分片共识方法包括:获取所在集合中所有节点的信息,以及其他集合中节点的信息;基于集合内的交易与所述集合内的所有节点达成局部共识,形成共识信息,并基于共识信息生成对应的区块;向其他区块的主节点广播共识信息,与其他区块的主节点基于每个区块的公式信息进行共识;判断是否接收到所有其他区块的主节点广播的共识信息;若是,按照每个区块的共识信息对所有区块进行排序,并同步区块;完成与其他区块的主节点共识后,按照排序结果执行每个区块中的交易。通过上述方法,本申请通过设计分片共识机制,使用分片技术并行处理交易,缩短交易流的流程,优化交易系统性能。
Description
技术领域
本申请涉及金融科技技术领域,特别是涉及一种基于区块链系统的分片共识方法、设备以及可读存储介质。
背景技术
在区块链网络中,基于主节点的共识算法是常见的共识算法。PBFT(PracticalByzantine Fault Tolerance)共识算法是现有较为常用的一种共识算法,在PBFT共识算法中,其view change方法可以从区块链系统的多个节点中选取出一个主节点,主节点用于在下一轮区块共识中进行区块打包等。
然而,现有的单链系统,性能和容量都有局限性;在现在主流的公链上面,每一个节点都处理所有交易并存储所有状态,导致网络处理能力无法扩展到超过每个节点。
发明内容
(一)本发明所要解决的技术问题
如何提供一种可以提高排队效率的银行业务的排队预约方法。
(二)本发明所采用的技术方案
本申请提供一种基于区块链系统的分片共识方法、设备以及可读存储介质。
本申请提供的一个技术方案是:提供一种基于区块链系统的分片共识方法,所述分片共识方法包括:
获取所在集合中所有节点的信息,以及其他集合中节点的信息;
基于所述集合内的交易与所述集合内的所有节点达成局部共识,形成共识信息,并基于所述共识信息生成对应的区块;
向其他区块的主节点广播所述共识信息,与所述其他区块的主节点基于每个区块的公式信息进行共识;
判断是否接收到所有所述其他区块的主节点广播的共识信息;
若是,按照每个区块的共识信息对所有区块进行排序,并同步区块;
完成与其他区块的主节点共识后,按照排序结果执行每个区块中的交易。
在一些可能的实施例中,所述基于所述集合内的交易与所述集合内的所有节点达成局部共识,形成共识信息,并基于所述共识信息生成对应的区块的步骤,包括:
基于所述集合内的交易与所述集合内的所有节点达成局部共识,生成集合内交易集和跨集合交易集;
基于所述集合内交易集和所述跨集合交易集生成所述区块;
按照所述区块内的交易内容生成区块头,其中,所述区块头包括两个哈希值,分别对应集合内交易和跨集合交易。
在一些可能的实施例中,所述按照每个区块的共识信息对所有区块进行排序的步骤,包括:
计算所述每个区块的哈希值;
比较所述每个区块的哈希值大小,以使所有区块按照所述哈希值大小从大到小的顺序进行排序。
在一些可能的实施例中,所述按照排序结果执行每个区块中的交易的步骤,包括:
按照所述排序结果执行每个区块中的集合内交易,进行对应的记账;
按照所述排序结果执行每个区块中的跨集合交易,进行对应的记账。
在一些可能的实施例中,所述分片共识方法,还包括:
当无法接受到一个区块的主节点广播的共识信息时,根据该区块的上一个区块的共识信息计算该区块的共识信息;
接受该区块计算得到的共识信息作为投票的共识信息。
在一些可能的实施例中,所述分片共识方法,还包括:
当自身的所述共识信息无法发送到所述其他区块的主节点时,通知所在集合中所有节点;
与所在集合中所有节点重新选举出新的主节点,以使新的主节点重新发起投票。
在一些可能的实施例中,所述分片共识方法,还包括:
接收客户端发送的请求信息;
对所述请求信息进行交易合法性检验;
若检验不合法,则返回交易无效的提示信息到所述客户端;
若检验合法,则获取所述请求信息中的执行交易内容,验证所述执行交易内容的合法性;
若验证合法,则缓存所述执行交易内容对应的交易,并锁定交易账户对应的资产;
若验证不合法,则返回交易无效的提示信息到所述客户端。
本申请提供的另一个技术方案是:提供一种终端设备,所述终端设备包括获取模块、共识模块、排序模块以及执行模块;其中,
所述获取模块,用于获取所在集合中所有节点的信息,以及其他集合中节点的信息;
所述共识模块,用于基于所述集合内的交易与所述集合内的所有节点达成局部共识,形成共识信息,并基于所述共识信息生成对应的区块;
所述排序模块,用于当接收到所有所述其他区块的主节点广播的共识信息时,按照每个区块的共识信息对所有区块进行排序,并同步区块;
所述执行模块,用于完成与其他区块的主节点共识后,按照排序结果执行每个区块中的交易。
本申请提供的另一个技术方案是:提供另一种终端设备,所述终端设备包括处理器和存储器,存储器中存储有计算机程序,处理器用于执行计算机程序以实现上述基于区块链系统的分片共识方法的步骤。
本申请采用的另一个技术方案是:提供一种计算机可读存储介质,其中,计算机可读存储介质存储有计算机程序,计算机程序被执行时实现上述基于区块链系统的分片共识方法的步骤。
(三)有益效果
区别于现有技术,本申请的有益效果在于:终端设备获取所在集合中所有节点的信息,以及其他集合中节点的信息;基于集合内的交易与所述集合内的所有节点达成局部共识,形成共识信息,并基于共识信息生成对应的区块;向其他区块的主节点广播共识信息,与其他区块的主节点基于每个区块的公式信息进行共识;判断是否接收到所有其他区块的主节点广播的共识信息;若是,按照每个区块的共识信息对所有区块进行排序,并同步区块;完成与其他区块的主节点共识后,按照排序结果执行每个区块中的交易。通过上述方法,本申请通过设计分片共识机制,使用分片技术并行处理交易,缩短交易流的流程,优化交易系统性能。
附图说明
图1是本申请提供的基于区块链系统的分片共识方法一实施例的流程示意图;
图2是本申请提供的区块链网络一实施例的结构示意图;
图3是图1所示分片共识方法中步骤S12子步骤的流程示意图;
图4是本申请提供的区块1一实施例的结构示意图;
图5是本申请提供的主节点故障一实施例的框架示意图;
图6是本申请提供的区块链网络另一实施例的结构示意图;
图7是本申请提供的主节点故障另一实施例的框架示意图;
图8是本申请提供的区块链网络又一实施例的结构示意图;
图9是本申请提供的终端设备一实施例的结构示意图;
图10是本申请提供的终端设备另一实施例的结构示意图;
图11是本申请提供的计算机可读存储介质一实施例的结构示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
在底层公链的系统内,网络上的交易将被分成不同的碎片,其由网络上的不同节点组成。因此,只需要处理一小部分输入的交易,并且通过与网络上的其他节点并行处理就能完成大量的验证工作。将网络分割为碎片会使得更多的交易同时被处理和验证,大大缩短了交易流的流程。如果集合分配合理,大多数交易都能在集合内完成,系统性能将再次得到优化。
申请人认为分层进行PBFT协议完成整个共识,在开发上具有可行性,因此,本申请针对这个技术提出了一种基于区块链系统的分片共识方法。具体请参阅图1,图1是本申请提供的基于区块链系统的分片共识方法一实施例的流程示意图。
本申请的分片共识方法的执行主体可以是一种终端设备,例如,分片共识方法可以由终端设备或服务器或其它处理设备执行,其中,终端设备可以为用户设备(UserEquipment,UE)、移动设备、用户终端、终端、蜂窝电话、无线电话、个人数字处理(PersonalDigital Assistant,PDA)、手持设备、计算设备、车载设备、可穿戴设备等。在一些可能的实现方式中,该分片共识方法可以通过处理器调用存储器中存储的计算机可读指令的方式来实现。
需要说明的是,本公开实施例的分片共识方法是以作为主节点的终端设备实现执行的。
如图1所示,本实施例的基于区块链系统的分片共识方法具体包括以下步骤:
步骤S11:获取所在集合中所有节点的信息,以及其他集合中节点的信息。
其中,区块链系统实现将全网的所有节点划分为k个集合,全网集合中的节点划分的结果都是一致的。例如,请参阅图2,图2是本申请提供的区块链网络一实施例的结构示意图。如图2所示,联盟链中划分至少3个集合,分别是集合1、集合2、集合3以及其他集合,各集合分层进行PBFT协议完成整个共识。
步骤S12:基于集合内的交易与集合内的所有节点达成局部共识,形成共识信息,并基于共识信息生成对应的区块。
其中,图2中每个集合内部就集合内交易通过PBFT算法达成局部共识,生成自己的区块,交易过程具体如下:
首先,客户端发送相应的交易请求给主节点,如本公开实施例的终端设备,主节点对该交易请求进行交易合法性检验。具体地,主节点验证验证该交易请求的签名是否合法;如果不合法,则提示交易无效,并返回提示信息到客户端;如果合法,则继续验证。主节点验证该交易请求的执行交易内容,如账户余额是否充足,转账额度是否满足等信息的合法性;如果合法,则缓存该交易并锁定账户对应的资产;如果不合法,则返回失败信息给客户端。
主节点基于集合内的交易与集合内的所有节点达成局部共识的步骤具体请参阅图3,图3是图1所示分片共识方法中步骤S12子步骤的流程示意图。如图3所示,本公开实施例的步骤S12还可以包括以下子步骤:
步骤S121:基于集合内的交易与集合内的所有节点达成局部共识,生成集合内交易集和跨集合交易集。
其中,每个集合内的交易通过PBFT算法达成共识,生成集合内交易集和跨集合交易集。
以生成集合内交易集的过程为例,主节点将需要共识的集合内交易通过gossip协议广播给本集合内的所有从节点。其中,acc1为转出账户、acc2为转入账户,acc1以及acc2均为集合内用户。
客户端1发起交易1:{0101234821,20200818,acc1,acc2,50,摘要1,签名1};
客户端1发起交易2:{0101234822,20200818,acc1,acc2,200,摘要2,签名2};
客户端1发起交易3:{0101234823,20200818,acc1,acc2,1000,摘要3,签名3};
客户端1发起交易4:{0101234824,20200818,acc1,acc2,300,摘要4,签名4}。
集合内的从节点接收主节点广播的交易信息后,从节点进行验证,验证通过后反馈给主节点。主节点收到从节点的反馈信息,主节点在已经成功收到超过2f个相同反馈后,形成局部共识并打包,通过gossip协议广播给集合内的所有从节点。其中,f为拜占庭节点的数目。
此时,交易集1账户状态变动如下:
账户 | 金额变动 |
acc1 | 减少1550 |
acc2 | 增加1550 |
集合内所有节点根据新的区块解锁相应资产,执行交易,更新数据库进行账本记账,生成集合内交易集1。
步骤S122:基于集合内交易集和跨集合交易集生成区块。
步骤S123:按照区块内的交易内容生成区块头,其中,区块头包括两个哈希值,分别对应集合内交易和跨集合交易。
其中,各集合并行打包区块,计算区块头哈希值,以再次进行共识。
以集合整理跨集合交易集2为例,acc1、aac2为集合1内账户,并且均为转出账户,acc3、acc4为转入账户,acc3、aac4均非集合1内的账户。
客户端1发起交易5:{0101234825,20200818,acc1,acc3,50,摘要5,签名5};
客户端1发起交易6:{0101234826,20200818,acc1,acc4,100,摘要6,签名6};
客户端1发起交易7:{0101234827,20200818,acc2,acc3,50,摘要7,签名7};
客户端1发起交易8:{0101234828,20200818,acc2,acc4,100,摘要8,签名8}。
主节点,即集合1中的Leader1将交易集1和交易集2打包成区块1,并计算区块1区块头的哈希值1,具体请参阅图4,图4是本申请提供的区块1一实施例的结构示意图。
如图4所示,主节点将交易1~交易4合并为交易集1,即集合内交易;主节点将交易5~交易8合并为交易集2,即跨集合交易。在区块1的区块头中包括交易集1以及交易集2的交易信息,主节点根据交易集1和交易集2的交易信息生成两个哈希字段,分别对应集合内交易和跨集合交易。
另外,在区块1的区块头还可以包括时间戳、区块高度以及上一个区块头的哈希值等信息。
在Leader1将交易集1和交易集2打包成区块1的同时,其他集合中的主节点并行处理集合内的交易信息。
例如,Leader2将集合内交易集3和跨集合交易集4打包成区块2,计算区块2区块头的哈希值2。具体地,acc3、acc4为集合2内账户,集合内交易集3交易如下:
客户端2发起交易9:{0101234831,20200818,acc3,acc4,150,摘要9,签名9};
客户端2发起交易10:{0101234832,20200818,acc3,acc4,200,摘要10,签名10}。
交易集3账户状态变动如下:
账户 | 金额变动 |
acc3 | 减少350 |
acc4 | 增加350 |
跨集合交易集4交易如下:
客户端2发起交易11:{0101234833,20200818,acc3,acc1,150,摘要11,签名11};
客户端2发起交易12:{0101234834,20200818,acc3,acc2,200,摘要12,签名12}。
同时Leader3将集合内交易集5和跨集合交易集6打包成区块3,计算区块3区块头的哈希值3。具体地,acc5、acc6为集合2内账户,集合内交易集5交易如下:
客户端3发起交易13:{0101234841,20200818,acc5,acc6,300,摘要13,签名13};
客户端3发起交易14:{0101234842,20200818,acc5,acc6,2000,摘要14,签名14}。
交易集5账户状态变动如下:
账户 | 金额变动 |
acc5 | 减少2300 |
acc6 | 增加2300 |
跨集合交易集6交易如下:
客户端3发起交易15:{0101234843,20200818,acc6,acc3,1500,摘要15,签名15};
客户端2发起交易16:{0101234844,20200818,acc5,acc2,200,摘要16,签名16}。
同时Leader4将集合内交易集7和跨集合交易集8打包成区块4,计算区块4区块头的哈希值4,以此类推。
步骤S13:向其他区块的主节点广播共识信息,与其他区块的主节点基于每个区块的公式信息进行共识。
其中,所有区块的主节点广播各自区块的共识信息,以使各主节点之间再次进行共识,形成全网共识。
步骤S14:判断是否接收到所有其他区块的主节点广播的共识信息。
其中,主节点验证是否收到所有主节点广播的哈希值。若收到,则继续执行后续共识流程;若未全部收到,说明某个主节点出现故障,此时,可以根据该主节点对应的区块头中上一区块头的哈希值计算该区块的区块头的哈希值用于投票。
对于出现故障的主节点,由于无法接收到广播结果信息,则该故障主节点所在的区块,需要重新选举新的主节点,并由新的主节点重新发起投票。
具体地,本公开实施例中主节点出现故障的情况主要包括以下两种:
(1)请参阅图5和图6,图5是本申请提供的主节点故障一实施例的框架示意图,图6是本申请提供的区块链网络另一实施例的结构示意图。如图5和图6所示,集合1中的Leader1在出块后、向其他leader广播前故障。
①集合1收到客户交易请求,验证交易合法性通过后,将集合内交易集1和跨集合交易集2进行缓存。集合内交易通过PBFT共识机制完成局部共识,打包并集合内广播。集合内节点1、节点2、节点3收到集合内新区块后,解锁相应资产,执行交易,更新数据库。Leader1节点将集合内交易集1和和跨集合交易集2打包成区块1,计算区块头的哈希值,并提交再次进行共识。
②Leader2打包区块2,计算区块头的哈希值hash2并提交再次进行共识;Leader3打包区块3,计算区块头的哈希值hash3并提交再次进行共识;Leader4打包区块4,计算区块头的哈希值hash4并提交再次进行共识。
③Leader2、Leader3、Leader4未收到集合1的Leader1的共识请求,Leader2、Leader3、Leader4根据集合1上一个区块填充空交易区块,并计算空交易的区块头的哈希值hash1,并参与共识排序。
④各Leader再次进行共识,超过1/2Leader节点的反馈,则达成共识,按区块头哈希值从大到小的顺序进行排序,hash2>hash3>hash4>hash1,所以排序结果为:区块2、区块3、区块4、区块1。
⑤各集合按如下顺序账本记账:
集合2:
执行集合内交易集5、交易集7;
执行跨集合交易集4、交易集6、交易集8;
集合3:
执行集合内交易集3、交易集7;
执行跨集合交易集4、交易集6、交易集8;
集合4:
执行集合内交易集5、交易集3;
执行跨集合交易集4、交易集6、交易集8。
⑥此时集合1收到Leader2的广播,则推选新的Leader节点Leader′。
⑦Leader′节点收到广播,按照如下顺序更新账本:
集合1:
交易集3账户状态:
账户 | 金额变动 |
acc3 | 减少350 |
acc4 | 增加350 |
交易集5账户状态:
账户 | 金额变动 |
acc5 | 减少2300 |
acc6 | 增加2300 |
交易集7账户状态:
账户 | 金额变动 |
acc7 | 减少1350 |
acc8 | 增加850 |
执行集合内交易集,只更新账户最终状态:交易集3、交易集5、交易集7;然后执行跨集合交易集4、交易集6、交易集8。
⑧Leader′节点重新提交未共识的区块哈希值,发起共识请求。
(2)请参阅图7和图8,图7是本申请提供的主节点故障另一实施例的框架示意图,图8是本申请提供的区块链网络又一实施例的结构示意图。如图7和图8所示,集合1中的Leader1在出块后故障。
①集合1收到客户交易请求,验证交易合法性通过后,将集合内交易集1和跨集合交易集2进行缓存。集合内交易通过PBFT共识机制打包,集合内节点1、节点2、节点3收到集合内交易的区块,解锁相应资产,执行交易,更新数据库。
Leader1节点将交易集1和交易集2打包成区块1,并广播准备共识的消息;Leader3打包区块3,计算区块头的哈希值hash3并提交再次进行共识;Leader4打包区块4,计算区块头的哈希值hash4并提交再次进行共识。
②Leader2、Leader3、Leader4未收到Leader1反馈,则Leader2、Leader3、Leader4达成共识,按区块1、区块2、区块3、区块4的区块头哈希值从大到小的顺序进行排序,排序结果如下:区块2、区块1、区块3、区块4。
③通过PBFT共识算法达成共识后:
1)集合2、集合3、集合4按如下顺序更新账本:
a.集合2:
执行集合内交易集1、交易集5、交易集7
执行跨集合交易集4、交易集2、交易集6、交易集8
b.集合3:
执行集合内交易集3、交易集1、交易集7
执行跨集合交易集4、交易集2、交易集6、交易集8
其中,交易集1、交易集3、易集5、易集7为集合内交易集,只更新账户状态即可:
交易集1账户状态:
账户 | 金额变动 |
acc1 | 减少1550 |
acc2 | 增加1550 |
交易集3账户状态:
交易集5账户状态:
账户 | 金额变动 |
acc5 | 减少2300 |
acc6 | 增加2300 |
交易集7账户状态:
账户 | 金额变动 |
acc7 | 减少1350 |
acc8 | 增加850 |
④Leader2向集合1广播共识结果。
⑤集合1推选新的Leader节点Leader′。
⑥Leader′节点根据投票结果更新账本:
执行集合内交易集3、交易集5、交易集7;
执行跨集合交易集4、交易集2、交易集6、交易集8。
⑦集合1中的原Leader节点1恢复正常。
⑧集合1的节点1根据Leader′节点同步账本。
本公开实施例在区块链系统内设计了节点异常处理机制,提高了区块链系统的处理交易性能,其他基于主节点更换主节点开销较大的共识系统也可以采用本公开实施例的节点异常处理机制,在此不再赘述。
步骤S15:按照每个区块的共识信息对所有区块进行排序,并同步区块。
其中,区块链系统根据区块头的哈希值对每个集合生成的区块进行哈希值从大到小的顺序进行排序,并同步区块。区块链系统得到排序后的区块顺序{区块k,区块k-1,…,区块1},其对应的区块头哈希值大小关系为:Hashk>Hashk-1>…>Hash1。
例如,区块链系统按照各集合的区块头的哈希值从大到小的顺序进行共识排序,由于Hash2>Hash1>Hash3>Hash4,排序结果如下:区块2,区块1,区块3,区块4。
步骤S16:完成与其他区块的主节点共识后,按照排序结果执行每个区块中的交易。
其中,主节点与其他区块的主节点共识完成后,按照排序结果执行每个集合中的内部交易,以及跨集合交易。具体地,为了提高执行效率,各集合并行先按最终账户状态执行各集合的集合内交易集,再执行各集合的跨集合交易集。
具体地,假设区块总数为k,区块排序结果为:{区块k,区块k-1,…,区块1}。集合内交易集的交易执行逻辑如下:
初始化变量i,i=0,i为第i个区块;
如果i<k,则继续执行下一步;
执行i=i+1;
区块k首先执行第i个区块中集合内交易;
循环执行下一个区块,直到所有区块集合内交易都遍历完成,保证每个节点的状态库已经执行过集合内交易。
需要说明的是,区块k的集合内交易第一次集合内共识完成,已记账并更新账本。
当上述过程的i≥k,则循环借宿,集合内交易都同步完成。然后,按区块头哈希值从大到小的顺序执行跨集合交易。跨集合交易集的交易执行逻辑如下:
假设区块总数为k;
如果k>1,则继续执行后续流程;
执行k=k-1;
执行第k个集合中的跨集合交易;
循环执行下一个区块,直到所有区块中跨集合交易都遍历完成。
在跨集合交易执行完成时,反馈交易结果并更新状态,保持全网账本状态一致。
例如,以图2的区块链网络为例,由于Hash2>Hash1>Hash3>Hash4,区块链系统中的区块排序结果如下:区块2,区块1,区块3,区块4。
各集合并行先按最终账户状态执行各集合的集合内交易集,再执行各集合的跨集合交易集的具体逻辑如下:
集合1:
①执行集合内交易集:
交易集3、交易集5、交易集7
②按区块头哈希值从大到小的顺序依次执行如下跨集合交易:
交易集4、交易集2、交易集6、交易集8
集合2:
①执行集合内交易集:
执行交易集1、交易集5、交易集7
②按区块头哈希值从大到小的顺序依次执行如下跨集合交易:
交易集4、交易集2、交易集6、交易集8
集合3:
①执行集合内交易集:
交易集3、交易集1、交易集7
②按区块头哈希值从大到小的顺序依次执行如下跨集合交易:
交易集4、交易集2、交易集6、交易集8
最后,各集合记账成功后返回客户端执行结果。
在本公开实施例中,终端设备获取所在集合中所有节点的信息,以及其他集合中节点的信息;基于集合内的交易与所述集合内的所有节点达成局部共识,形成共识信息,并基于共识信息生成对应的区块;向其他区块的主节点广播共识信息,与其他区块的主节点基于每个区块的公式信息进行共识;判断是否接收到所有其他区块的主节点广播的共识信息;若是,按照每个区块的共识信息对所有区块进行排序,并同步区块;完成与其他区块的主节点共识后,按照排序结果执行每个区块中的交易。通过上述方法,本申请通过设计分片共识机制,使用分片技术并行处理交易,缩短交易流的流程,优化交易系统性能。
为了实现上述实施例的基于区块链系统的分片共识方法,本申请提供了一种终端设备,具体请参阅图9,图9是本申请提供的终端设备一实施例的结构示意图。
如图9所示,本实施例的终端设备400包括获取模块41、共识模块42、排序模块43以及执行模块44。
其中,获取模块41,用于获取所在集合中所有节点的信息,以及其他集合中节点的信息;共识模块42,用于基于所述集合内的交易与所述集合内的所有节点达成局部共识,形成共识信息,并基于所述共识信息生成对应的区块;排序模块43,用于当接收到所有所述其他区块的主节点广播的共识信息时,按照每个区块的共识信息对所有区块进行排序,并同步区块;执行模块44,用于完成与其他区块的主节点共识后,按照排序结果执行每个区块中的交易。
为了实现上述实施例的基于区块链系统的分片共识方法,本申请还提供了另一种终端设备,具体请参阅图10,图10是本申请提供的终端设备另一实施例的结构示意图。
如图10所示,本实施例的终端设备500包括处理器51、存储器52、输入输出设备53以及总线54。
该处理器51、存储器52、输入输出设备53分别与总线54相连,该存储器52中存储有计算机程序,处理器51用于执行计算机程序以实现上述实施例的基于区块链系统的分片共识方法。
在本实施例中,处理器51还可以称为CPU(Central Processing Unit,中央处理单元)。处理器51可能是一种集成电路芯片,具有信号的处理能力。处理器51还可以是通用处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或者其它可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。处理器51还可以是GPU(Graphics Processing Unit,图形处理器),又称显示核心、视觉处理器、显示芯片,是一种专门在个人电脑、工作站、游戏机和一些移动设备(如平板电脑、智能手机等)上图像运算工作的微处理器。GPU的用途是将计算机系统所需要的显示信息进行转换驱动,并向显示器提供行扫描信号,控制显示器的正确显示,是连接显示器和个人电脑主板的重要元件,也是“人机对话”的重要设备之一。显卡作为电脑主机里的一个重要组成部分,承担输出显示图形的任务,对于从事专业图形设计的人来说显卡非常重要。通用处理器可以是微处理器或者该处理器51也可以是任何常规的处理器等。
本申请还提供一种计算机可读存储介质,如图11所示,计算机可读存储介质600用于存储计算机程序61,计算机程序61在被处理器执行时,用以实现如本申请基于区块链系统的分片共识方法实施例中所述的方法。
本申请基于区块链系统的分片共识方法实施例中所涉及到的方法,在实现时以软件功能单元的形式存在并作为独立的产品销售或使用时,可以存储在设备中,例如一个计算机可读取存储介质。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本发明各个实施方式所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述仅为本发明的实施方式,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (10)
1.一种基于区块链系统的分片共识方法,其特征在于,所述分片共识方法包括:
获取所在集合中所有节点的信息,以及其他集合中节点的信息;
基于所述集合内的交易与所述集合内的所有节点达成局部共识,形成共识信息,并基于所述共识信息生成对应的区块;
向其他区块的主节点广播所述共识信息,与所述其他区块的主节点基于每个区块的公式信息进行共识;
判断是否接收到所有所述其他区块的主节点广播的共识信息;
若是,按照每个区块的共识信息对所有区块进行排序,并同步区块;
完成与其他区块的主节点共识后,按照排序结果执行每个区块中的交易。
2.根据权利要求1所述的分片共识方法,其特征在于,
所述基于所述集合内的交易与所述集合内的所有节点达成局部共识,形成共识信息,并基于所述共识信息生成对应的区块的步骤,包括:
基于所述集合内的交易与所述集合内的所有节点达成局部共识,生成集合内交易集和跨集合交易集;
基于所述集合内交易集和所述跨集合交易集生成所述区块;
按照所述区块内的交易内容生成区块头,其中,所述区块头包括两个哈希值,分别对应集合内交易和跨集合交易。
3.根据权利要求2所述的分片共识方法,其特征在于,
所述按照每个区块的共识信息对所有区块进行排序的步骤,包括:
计算所述每个区块的哈希值;
比较所述每个区块的哈希值大小,以使所有区块按照所述哈希值大小从大到小的顺序进行排序。
4.根据权利要求3所述的分片共识方法,其特征在于,
所述按照排序结果执行每个区块中的交易的步骤,包括:
按照所述排序结果执行每个区块中的集合内交易,进行对应的记账;
按照所述排序结果执行每个区块中的跨集合交易,进行对应的记账。
5.根据权利要求1所述的分片共识方法,其特征在于,
所述分片共识方法,还包括:
当无法接受到一个区块的主节点广播的共识信息时,根据该区块的上一个区块的共识信息计算该区块的共识信息;
接受该区块计算得到的共识信息作为投票的共识信息。
6.根据权利要求1所述的分片共识方法,其特征在于,
所述分片共识方法,还包括:
当自身的所述共识信息无法发送到所述其他区块的主节点时,通知所在集合中所有节点;
与所在集合中所有节点重新选举出新的主节点,以使新的主节点重新发起投票。
7.根据权利要求1所述的分片共识方法,其特征在于,
所述分片共识方法,还包括:
接收客户端发送的请求信息;
对所述请求信息进行交易合法性检验;
若检验不合法,则返回交易无效的提示信息到所述客户端;
若检验合法,则获取所述请求信息中的执行交易内容,验证所述执行交易内容的合法性;
若验证合法,则缓存所述执行交易内容对应的交易,并锁定交易账户对应的资产;
若验证不合法,则返回交易无效的提示信息到所述客户端。
8.一种终端设备,其特征在于,所述终端设备包括获取模块、共识模块、排序模块以及执行模块;其中,
所述获取模块,用于获取所在集合中所有节点的信息,以及其他集合中节点的信息;
所述共识模块,用于基于所述集合内的交易与所述集合内的所有节点达成局部共识,形成共识信息,并基于所述共识信息生成对应的区块;
所述排序模块,用于当接收到所有所述其他区块的主节点广播的共识信息时,按照每个区块的共识信息对所有区块进行排序,并同步区块;
所述执行模块,用于完成与其他区块的主节点共识后,按照排序结果执行每个区块中的交易。
9.一种终端设备,其特征在于,所述终端设备包括处理器和存储器;所述存储器中存储有计算机程序,所述处理器用于执行所述计算机程序以实现如权利要求1~7中任一项所述基于区块链系统的分片共识方法的步骤。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,所述计算机程序被执行时实现如权利要求1~7中任一项所述基于区块链系统的分片共识方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110833532.3A CN113568974B (zh) | 2021-07-23 | 2021-07-23 | 基于区块链系统的分片共识方法、设备以及可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110833532.3A CN113568974B (zh) | 2021-07-23 | 2021-07-23 | 基于区块链系统的分片共识方法、设备以及可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113568974A true CN113568974A (zh) | 2021-10-29 |
CN113568974B CN113568974B (zh) | 2024-07-16 |
Family
ID=78166483
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110833532.3A Active CN113568974B (zh) | 2021-07-23 | 2021-07-23 | 基于区块链系统的分片共识方法、设备以及可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113568974B (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114385761A (zh) * | 2022-03-23 | 2022-04-22 | 支付宝(杭州)信息技术有限公司 | 一种基于共识系统的共识数据存储、获取方法及装置 |
CN114745131A (zh) * | 2022-04-06 | 2022-07-12 | 广东钜联信息科技有限公司 | 一种区块链的pbft改进共识算法 |
CN115001809A (zh) * | 2022-05-31 | 2022-09-02 | 深圳壹账通智能科技有限公司 | 区块链网络共识方法、装置、设备及介质 |
CN116055064A (zh) * | 2023-03-17 | 2023-05-02 | 安徽中科晶格技术有限公司 | 区块链分片中多区块同时共识方法、系统、介质及设备 |
WO2024040796A1 (zh) * | 2022-08-26 | 2024-02-29 | 国网智慧车联网技术有限公司 | 一种区块链电力交易系统、共识方法、设备和存储介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108846673A (zh) * | 2018-07-02 | 2018-11-20 | 苏州我的打工人力资源有限公司 | 一种区块数据的处理方法、装置、设备和存储介质 |
CN109688199A (zh) * | 2018-11-28 | 2019-04-26 | 西安电子科技大学 | 一种多域分层物联网联盟链平台及其分片方法、计算机 |
CN110400140A (zh) * | 2019-06-04 | 2019-11-01 | 西安电子科技大学 | 基于Fabric的分层分片交易信息处理方法及应用 |
US20190354977A1 (en) * | 2017-04-28 | 2019-11-21 | Alibaba Group Holding Limited | Consensus verification method and device |
CN110570202A (zh) * | 2019-09-02 | 2019-12-13 | 杭州趣链科技有限公司 | 一种基于分片技术的混合共识方法 |
CN112988818A (zh) * | 2021-04-30 | 2021-06-18 | 支付宝(杭州)信息技术有限公司 | 区块链交易执行方法、区块链节点及控制装置 |
-
2021
- 2021-07-23 CN CN202110833532.3A patent/CN113568974B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20190354977A1 (en) * | 2017-04-28 | 2019-11-21 | Alibaba Group Holding Limited | Consensus verification method and device |
CN108846673A (zh) * | 2018-07-02 | 2018-11-20 | 苏州我的打工人力资源有限公司 | 一种区块数据的处理方法、装置、设备和存储介质 |
CN109688199A (zh) * | 2018-11-28 | 2019-04-26 | 西安电子科技大学 | 一种多域分层物联网联盟链平台及其分片方法、计算机 |
CN110400140A (zh) * | 2019-06-04 | 2019-11-01 | 西安电子科技大学 | 基于Fabric的分层分片交易信息处理方法及应用 |
CN110570202A (zh) * | 2019-09-02 | 2019-12-13 | 杭州趣链科技有限公司 | 一种基于分片技术的混合共识方法 |
CN112988818A (zh) * | 2021-04-30 | 2021-06-18 | 支付宝(杭州)信息技术有限公司 | 区块链交易执行方法、区块链节点及控制装置 |
Non-Patent Citations (1)
Title |
---|
杨明等: "基于区块链和云平台的数据共享模型", 信息工程大学学报, vol. 22, no. 1, 15 February 2021 (2021-02-15), pages 94 - 101 * |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114385761A (zh) * | 2022-03-23 | 2022-04-22 | 支付宝(杭州)信息技术有限公司 | 一种基于共识系统的共识数据存储、获取方法及装置 |
CN114745131A (zh) * | 2022-04-06 | 2022-07-12 | 广东钜联信息科技有限公司 | 一种区块链的pbft改进共识算法 |
CN115001809A (zh) * | 2022-05-31 | 2022-09-02 | 深圳壹账通智能科技有限公司 | 区块链网络共识方法、装置、设备及介质 |
WO2024040796A1 (zh) * | 2022-08-26 | 2024-02-29 | 国网智慧车联网技术有限公司 | 一种区块链电力交易系统、共识方法、设备和存储介质 |
CN116055064A (zh) * | 2023-03-17 | 2023-05-02 | 安徽中科晶格技术有限公司 | 区块链分片中多区块同时共识方法、系统、介质及设备 |
Also Published As
Publication number | Publication date |
---|---|
CN113568974B (zh) | 2024-07-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113568974A (zh) | 基于区块链系统的分片共识方法、设备以及可读存储介质 | |
CN110503558B (zh) | 一种基于区块链系统的处理方法及装置 | |
CN108717630B (zh) | 一种出块方法及其实现系统 | |
US10397328B2 (en) | Method and system for providing a robust blockchain with an integrated proof of storage | |
CN109242500B (zh) | 区块链交易有效性验证方法、装置及存储介质 | |
JP2024074969A (ja) | バリデータノードにより提供されるブロックチェーントランザクションをマイニングする方法及びシステム | |
CN109583903B (zh) | 区块确认方法、设备和存储介质 | |
KR20190067581A (ko) | 블록체인 트랜잭션 분산 처리 장치 및 방법 | |
WO2023016428A1 (zh) | 一种拜占庭容错方法、装置、电子设备及存储介质 | |
CN108600315B (zh) | 区块链路由处理方法、装置及存储介质 | |
CN107688945A (zh) | 一种基于延迟状态共识的高效许可链 | |
WO2020087042A1 (en) | Blockchain consensus systems and methods involving a time parameter | |
US20190287099A1 (en) | Distributed ledger update method | |
CN113850600B (zh) | 基于区块链的交易共识方法、装置、设备及存储介质 | |
WO2023016426A1 (zh) | 一种异步二元共识方法、装置、电子设备及存储介质 | |
CN111161078A (zh) | 一种一对多的区块链转账实现方法 | |
CN113256417B (zh) | 一种基于交易共享的共识出块方法及系统 | |
CN112053153A (zh) | 背书签名数据存储方法、装置、电子设备及可读存储介质 | |
CN110428238A (zh) | 区块链的账户撤回方法及系统 | |
CN113888164A (zh) | 区块链交易池实现方法、装置、计算机设备和存储介质 | |
CN107577700B (zh) | 数据库容灾的处理方法及装置 | |
CN113157450A (zh) | 在区块链系统中执行区块的方法及装置 | |
CN112634034A (zh) | 预约方法、装置、电子设备及计算机可读存储介质 | |
CN114124410B (zh) | 一种适用于供应链场景下多方验证的改进型poa共识方法 | |
CN114338673A (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 |