CN114328718A - 一种基于Hyperledger Fabric的跨区块链共识方法 - Google Patents
一种基于Hyperledger Fabric的跨区块链共识方法 Download PDFInfo
- Publication number
- CN114328718A CN114328718A CN202111429399.1A CN202111429399A CN114328718A CN 114328718 A CN114328718 A CN 114328718A CN 202111429399 A CN202111429399 A CN 202111429399A CN 114328718 A CN114328718 A CN 114328718A
- Authority
- CN
- China
- Prior art keywords
- chain
- cross
- transaction
- target
- 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.)
- Pending
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种基于Hyperledger Fabric的跨区块链共识方法,该方法通过对跨区块链共识,解决单跨链问题和多链协同跨链问题,在保证各链之间的事务原子性和隔离性的同时提升跨链系统的吞吐量和事务成功率。该方法包括:各区块链在跨链调度进行注册;跨链调度对跨链事务的路由认证转发;跨链调度对协同跨链结果进行共识;区块链系统对跨链事务特殊处理;跨链数据库对跨链事务进行记录。采用本发明可以实现两条及以上的区块链之间的跨链结果共识、跨链读写操作、跨链溯源操作。
Description
技术领域
本发明涉及计算机区块链技术领域,尤其是涉及一种基于Hyperledger Fabric的跨区块链共识方法。
背景技术
区块链是现代分布式事务处理的热门话题之一。区块链是一个分布式的共享账本和数据库,具有去中心化、不可篡改、全程留痕、可以追溯、集体维护、公开透明等特点。这些特点保证了区块链的“诚实”与“透明”。区块链可分为公链、联盟链和私链。其中联盟链因其链内公开链间隔离的特点可以更好的应用于生产生活中,解决数据孤岛的问题。
但因区块链复杂的共识验证存储过程,有数据互换代价高、数据可信度低、系统吞吐量低等问题。在区块链节点去中心化共同维护账本的情境下,保证跨区块链事务及其共识的原子性、隔离性尤为重要,这也是目前区块链跨链技术的难点。
因此,如何提出一种保证并发事务安全的高吞吐的基于Hyperledger Fabric的跨区块链共识方法是本领域技术人员亟待解决的问题。
发明内容
为解决现有技术的不足,利用设计的调度程序作为多链间通信的中间件,对跨链事务及其结果进行调度与转发、帮助实现跨链共识,从而实现了一对一跨链读写与多链协同两类事务,实现了多条链间的协同操作的目的,本发明采用如下的技术方案:
一种基于Hyperledger Fabric的跨区块链共识方法,包括如下步骤:
S1,创建跨链调度程序,并将区块链的通道客户端注册到跨链调度程序中;
S2,发起链构造跨链请求,发送到跨链调度程序;
S3,跨链调度程序解析跨链请求,构造面向目标链的跨链请求,并发送到目标链通道客户端;
S4,目标链从目标链通道客户端,接收并记录面向目标链的跨链请求,根据其操作类型将跨链事务划分为跨链读事务和跨链写事务,若为跨链读事务,目标链调用本地链码查询,并将跨链读事务结果发送到其通道客户端,若为跨链写事务,目标链调用本地链码进行模拟执行,并将跨链写事务结果上链,进行预提交,跨链状态初始化为未完成,最后将写事务状态结果发送到其通道客户端;目标链处理跨链事务时,仍然遵循原区块链平台的EOV流程,使跨链事务能够在目标链实时上链,降低跨链事务延迟并为用户提供对跨链事务进行溯源以及查询等功能;
S5,跨链调度程序从目标链通道客户端获取结果及请求结束标志,经跨链调度进行跨链结果共识后,确认跨链结果,并发送到发起链与目标链;
S6,若跨链读事务执行成功,发起链将跨链读事务结果上链,更新相关跨链读事务状态为成功,并对获取的数据进行后续处理,否则只更新相关跨链读事务状态为失败,若为跨链写事务,发起链更新本地的相关跨链写事务状态,即根据跨链写结果,将本地跨链状态记录为成功或失败,目标链根据跨链共识结果进行预提交确认,或进行跨链状态回滚。
进一步地,S1中的跨链调度程序,保存各区块链及其通道客户端信息。
进一步地,S2中记录的跨链事务,包括发起链、目标链及跨链操作信息,将发起链本地状态记录为未成功。
进一步地,有两条以上的所述目标链;
所述S4,目标链将收到的跨链请求发送到背书节点进行模拟执行与背书操作,背书节点记录跨链子事务及其相关读写集信息,并将模拟执行结果返回该目标链通道客户端,该目标链客户端将子事务结果发送到排序节点进行排序并打包成区块,发送到记账节点,记账节点保存跨链事务相关信息,并对区块进行验证、预提交,将结果发送到本目标链通道客户端;协同跨链中,跨链事务在打包时被单独打包为一个区块,将跨链事务与普通事务分离,从而便于对所述跨链事务进行查询与溯源;在多链协同跨链中,处理跨链事务时,在原区块链平台的EOV流程中添加了对协同跨链结果进行共识的验证阶段,形成EOVC流程,从而保证多链协同跨链中跨链事务的原子性;
所述S5,跨链调度程序从每条目标链通道客户端收集相应跨链子事务响应,跨链调度程序根据响应进行跨链结果共识,根据共识后的跨链结果向每条目标链排序节点发送跨链结果消息,排序节点将结果消息发送到记账节点,记账节点判断跨链事务是否成功,若所有跨链子事务均成功,则协同跨链事务成功,否则跨链事务失败,根据保存的跨链事务相关信息,对所有跨链子事务回滚;
所述S6,发起链记录协同跨链事务结果。
跨链调度程序作为跨链过程中连接多条区块链的核心机制,能够实现对跨链请求、跨链结果、协同跨链结果的共识与记录转发,辅助实现多条区块链间的通信。
进一步地,在跨链请求中附加跨链请求标识,目标链将收到的跨链请求与跨链请求标识封装到跨链事务头中,将其构造为新的事务并签名。
进一步地,S4中的排序节点首先将之前未打包的全部事务打包为一个区块,再将跨链事务单独打包成块并发送。
进一步地,S4中,通过领导节点接收排序节点发送的区块,并分发到所有记账节点;所述S5中,排序节点将结果消息转发到领导节点,再由领导节点分发到记账节点。
进一步地,S4中的背书节点维护一个数据结构,包括一个跨链事务ID数组、多个读写集对应键数组以及一个锁定键表,其中每个跨链事务ID对应一个读写集对应键数组,锁定键表中的键为跨链事务的读写集对应键,其初始值为空,背书节点在通过链码对跨链事务进行模拟执行时,将跨链事务ID及其涉及的读写键保存,并将其填写到所述数据结构中,其中锁定键表中的所有键都不允许被其他事务读写;所述S5中,跨链调度程序向所有目标链排序节点发送协同跨链事务ID及是否成功的结果消息,记账节点判断跨链事务是否成功,若跨链事务失败,则根据保存的键及其对应的原始值,恢复区块链数据库,若成功,则保留数据库修改,解锁跨链子事务相关键,使其能够被其他事务读写。在对协同跨链事务进行结果共识与验证前,所述跨链操作依然上链,但对结果进行上锁;在共识与验证通过后,对所述事务结果进行解锁或回滚,从而避免结果被其他事务修改,保护所述跨链事务的原子性。
进一步地,提交节点将跨链事务对应键及其原始值所占空间释放,背书节点将其对应锁定键、读写集数组释放。
进一步地,在原区块链平台的基础上添加跨链数据库,利用跨链数据库对跨链历史进行记录,从而实现对跨链操作的溯源以及历史查询等功能。
本发明的优势和有益效果在于:
本发明的一种基于Hyperledger Fabric的跨区块链共识方法,通过中继调度程序解决跨链通信问题,并通过上锁、回滚等机制保护了多链事务的原子性与安全性,实现了在多条Hyperledger Fabric区块链间的跨链。能够为一对一跨链操作以及多链系统跨链操作提供优秀的解决方案。
附图说明
图1是本发明的整体结构示意图。
图2是本发明中一对一跨链读写事务及其共识流程图。
图3为本发明的多链协同跨链中子事务处理及其共识流程图。
图4为本发明的多链协同跨链中事务结果汇总阶段流程图。
具体实施方式
以下结合附图对本发明的具体实施方式进行详细说明。应当理解的是,此处所描述的具体实施方式仅用于说明和解释本发明,并不用于限制本发明。
本发明实施例公开了一种基于Hyperledger Fabric的跨区块链共识方法,实施例由多个区块链平台以及充当中继的调度程序构成,如图1所示。能够通过跨区块链共识方法实现一对一跨链以及多链协同跨链两类功能。用户能够通过源链向中继调度程序发起一对一跨链或多链协同跨链事务,并由中继调度程序将事务转发到目标链,执行完成后由调度程序再次将结果由目标链发送到源链,由源链对结果进行记录。
本方法设计的跨链机制适用于多区块链,多组织,多节点的情况。在本实施例中一对一跨链中使用两条区块链BC={BC0,BC1},一个中继调度程序S;多链协同跨链中使用三条区块链BC={BC0,BC1,BC2}以及一个中继调度程序S。其中每条区块链均具有1个排序节点或集群,2个组织,每个组织包含2个节点,共4个节点,分别为背书节点、记账节点、领导节点、提交节点。
方法中实现的一对一跨链的流程图如图2所示,下面将结合流程图与实施例对具体实施方法进行详细介绍。
1.首先搭建两条独立区块链BC0、BC1,创建跨链调度程序并将两条区块链的通道客户端注册在调度程序中。调度程序中需要保存各区块链及其客户端信息。
2.区块链BC0作为发起请求的源链,构造跨链读/写请求发送到跨链调度程序。
3.源链BC0记录跨链事务,其中跨链事务包含源链、目标链以及跨链操作等信息。
4.调度程序接收到跨链请求后,解析请求并构造面向目标链BC1的读/写请求,将读写请求发送到目标链BC1通道客户端。
5. BC1接收到跨链请求后在本地记录,并根据其操作类型分为跨链读事务与跨链写事务:
其中跨链读事务与区块链原查询事务类似,跨链读事务执行步骤如下:
(1.1)目标链BC1调用本地链码的查询方法在本地对区块链账本进行查询获得查询结果,查询结果不作为BC1的事务上链。
(1.2)将查询结果返回到BC1通道客户端,调度程序从BC1通道客户端获取跨链读事务结果。
(1.3)调度程序将查询结果与跨链读结束标志发送到BC0通道客户端。
(1.4)若跨链读事务执行成功,BC0将跨链读结果上链,更新相关跨链事务状态为成功,并对获取的数据进行后续处理。
(1.5)若跨链读事务执行失败,BC0将相关跨链读事务状态修改为失败。
跨链写事务执行步骤如下:
(2.1)目标链BC1调用本地链码对跨链写事务进行模拟执行并上链。
(2.2) BC1根据写操作结果更新本地的跨链记录为成功或失败。
(2.3)调度程序从BC1的通道客户端获取BC1的写操作是否成功的结果并发送到BC0。
(2.4) BC0将本地存储的跨链事务状态根据跨链写操作结果更改为成功或失败。
6.至此一对一跨链事务的整体生命周期完成。
方法中实现的多链协同跨链的流程如图3、4所示,下面将结合流程图与实施例对具体实施方法进行详细介绍。相较于一对一跨链,多链协同跨链涉及到多条目标链,所有目标链的跨链子事务整体作为一个协同跨链事务。当且仅当所有目标链上的跨链子事务都提交成功时,协同跨链子事务才为成功,否则需要将该事务回滚。
1.首先搭建三条独立区块链BC0、BC1、BC2,创建跨链调度程序并将区块链的通道客户端注册在调度程序中。调度程序中需要保存各区块链及其客户端信息。
2. BC0用户构造跨链事务并发送到调度程序。跨链事务应包含事务涉及的目标链、事务所需操作等内容。
3.调度程序解析请求并分别构造跨链请求消息发送到目标链BC1、BC2,同时在跨链请求中附加标识本请求为跨链请求的参数。
4.BC1、BC2将收到的请求与跨链事务参数封装到事务头中,将其构造为新的事务并签名,发送到相应背书节点进行模拟执行与背书操作。
5.背书节点收到包含跨链标识的事务后对其进行跨链特殊操作,背书节点维护一个跨链事务ID数组,多个读写集对应键数组以及一个锁定键表。其中每个跨链事务ID对应一个读写集对应键数组,锁定键表中的键则为跨链事务的读写集对应键,其初始值为空。
6.背书节点在通过链码对跨链事务进行模拟执行时,需要记录事务涉及的读写键并将其填写到上述数据结构中。其中锁定键表中的所有键都不允许被其他事务读写。
7.背书节点将模拟执行结果返回到本链客户端,客户端将事务发送到排序节点进行排序并打包成区块。
8.当排序节点接收到跨链事务时,首先将之前未打包的全部事务打包为一个区块,再将跨链事务单独打包成块并发送到领导节点,由领导节点将区块分发到所有记账节点。
9.记账节点接收到跨链事务区块后,保存其事务ID以及对应的键、原始值,并对区块进行验证、提交,将结果发送到本链通道客户端。
10.调度程序从每条目标链收集相应跨链子事务响应,当所有子事务均执行成功时,协同跨链事务成功,若任何跨链子事务失败,则所有子事务均需要回滚。
11.调度程序在收集全部子事务响应后,根据结果向每条目标链排序节点发送协同跨链子事务ID以及是否成功的结果消息。排序节点将结果消息转发到领导节点再分发到记账节点。
12.记账节点接收到跨链事务完成消息后,判断事务是否成功。若事务失败则根据之前记录的键及其原始值恢复区块链数据库,若成功则保留数据库修改。
13.提交节点将跨链事务对应键及其原始值所占空间释放,背书节点将其对应锁定键、读写集数组释放,使其能够被其他事务读写。
14.源链BC0记录此协同跨链事务结果。
以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明实施例技术方案的范围。
Claims (10)
1.一种基于Hyperledger Fabric的跨区块链共识方法,其特征在于包括如下步骤:
S1,创建跨链调度程序,并将区块链的通道客户端注册到跨链调度程序中;
S2,发起链构造跨链请求,发送到跨链调度程序;
S3,跨链调度程序解析跨链请求,构造面向目标链的跨链请求,并发送到目标链通道客户端;
S4,目标链从目标链通道客户端,接收并记录面向目标链的跨链请求,根据其操作类型将跨链事务划分为跨链读事务和跨链写事务,若为跨链读事务,目标链调用本地链码查询,并将跨链读事务结果发送到其通道客户端,若为跨链写事务,目标链调用本地链码进行模拟执行,并将跨链写事务结果上链,进行预提交,跨链状态初始化为未完成,最后将写事务状态结果发送到其通道客户端;
S5,跨链调度程序从目标链通道客户端获取结果,经跨链调度进行跨链结果共识后,确认跨链结果,并发送到发起链与目标链;
S6,若跨链读事务执行成功,发起链将跨链读事务结果上链,更新跨链读事务状态为成功,否则只更新跨链读事务状态为失败,若为跨链写事务,发起链更新本地跨链写事务状态为成功或失败,目标链根据跨链共识结果进行预提交确认,或进行跨链状态回滚。
2.根据权利要求1所述的一种基于Hyperledger Fabric的跨区块链共识方法,其特征在于所述S1中的跨链调度程序,保存各区块链及其通道客户端信息。
3.根据权利要求1所述的一种基于Hyperledger Fabric的跨区块链共识方法,其特征在于所述S2中记录的跨链事务,包括发起链、目标链及跨链操作信息,将发起链本地状态记录为未成功。
4.一种根据权利要求1所述的基于Hyperledger Fabric的跨区块链共识方法,其特征在于有两条以上的所述目标链;
所述S4,目标链将收到的跨链请求发送到背书节点进行模拟执行与背书操作,背书节点记录跨链事务及其相关读写集信息,并将模拟执行结果返回该目标链通道客户端,该目标链客户端将结果发送到排序节点进行排序并打包成区块,发送到记账节点,记账节点保存跨链事务相关信息,并对区块进行验证、预提交,将结果发送到本目标链通道客户端;
所述S5,跨链调度程序从目标链通道客户端收集跨链事务响应,跨链调度程序根据响应进行跨链结果共识,根据共识后的跨链结果向目标链排序节点发送跨链结果消息,排序节点将结果消息发送到记账节点,记账节点判断跨链事务是否成功,若跨链事务均成功,则协同跨链事务成功,否则失败,根据保存的跨链事务相关信息,对跨链事务回滚;
所述S6,发起链记录协同跨链事务结果。
5.根据权利要求4所述的一种基于Hyperledger Fabric的跨区块链共识方法,其特征在于在跨链请求中附加跨链请求标识,目标链将收到的跨链请求与跨链请求标识封装到跨链事务头中,将其构造为新的事务并签名。
6.根据权利要求4所述的一种基于Hyperledger Fabric的跨区块链共识方法,其特征在于所述S4中,排序节点首先将未打包的事务打包为一个区块,再将跨链事务单独打包成块并发送。
7.根据权利要求4所述的一种基于Hyperledger Fabric的跨区块链共识方法,其特征在于所述S4中,领导节点接收排序节点发送的区块,并分发到记账节点;所述S5中,排序节点将结果消息转发到领导节点,再由领导节点分发到记账节点。
8.根据权利要求4所述的一种基于Hyperledger Fabric的跨区块链共识方法,其特征在于所述S4中,背书节点维护一个数据结构,包括跨链事务ID数组、读写集对应键数组以及锁定键表,其中每个跨链事务ID对应一个读写集对应键数组,锁定键表中的键为跨链事务的读写集对应键,背书节点通过对跨链事务进行模拟执行时,将跨链事务ID及其涉及的读写键保存,并将其填写到所述数据结构中,其中锁定键表中的键不允许被其他事务读写;所述S5中,跨链调度程序向目标链排序节点发送协同跨链事务ID及是否成功的结果消息,记账节点判断跨链事务是否成功,若跨链事务失败,则根据保存的键及其对应的原始值,恢复区块链数据,若成功,则保留数据修改,解锁跨链事务相关键。
9.根据权利要求8所述的一种基于Hyperledger Fabric的跨区块链共识方法,其特征在于提交节点将跨链事务对应键及其原始值所占空间释放,背书节点将其对应锁定键、读写集数组释放。
10.根据权利要求1或4所述的一种基于Hyperledger Fabric的跨区块链共识方法,其特征在于添加跨链数据库,利用跨链数据库对跨链历史进行记录。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111429399.1A CN114328718A (zh) | 2021-11-29 | 2021-11-29 | 一种基于Hyperledger Fabric的跨区块链共识方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111429399.1A CN114328718A (zh) | 2021-11-29 | 2021-11-29 | 一种基于Hyperledger Fabric的跨区块链共识方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114328718A true CN114328718A (zh) | 2022-04-12 |
Family
ID=81047451
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111429399.1A Pending CN114328718A (zh) | 2021-11-29 | 2021-11-29 | 一种基于Hyperledger Fabric的跨区块链共识方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114328718A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116582243A (zh) * | 2023-04-20 | 2023-08-11 | 中国人民解放军战略支援部队信息工程大学 | 基于森林拓扑结构的区块链系统分层跨链共识方法 |
-
2021
- 2021-11-29 CN CN202111429399.1A patent/CN114328718A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116582243A (zh) * | 2023-04-20 | 2023-08-11 | 中国人民解放军战略支援部队信息工程大学 | 基于森林拓扑结构的区块链系统分层跨链共识方法 |
CN116582243B (zh) * | 2023-04-20 | 2024-06-07 | 中国人民解放军战略支援部队信息工程大学 | 基于森林拓扑结构的区块链系统分层跨链共识方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111367628B (zh) | 分布式事务的处理方法、装置及消息生产方、消费方系统 | |
CN109359159A (zh) | 分布式存储方法、系统及设备 | |
CN108492108A (zh) | 区块链跨链通信方法、系统和计算机可读存储介质 | |
CN102103642B (zh) | 基于oltp的数据删除方法、系统及图形数据库服务器 | |
CN106777270A (zh) | 一种基于提交点时间线同步的异构数据库复制并行执行系统及方法 | |
CN102317913B (zh) | 一种事务恢复方法和事务恢复装置 | |
US20110167041A1 (en) | Method and device for maintaining a changelog in data synchronization | |
CN110888718A (zh) | 分布式事务的实现方法及装置 | |
CN112910724B (zh) | 区块链网络的压力测试方法及装置、系统 | |
CN112965985A (zh) | 一种实现跨链互操作的数据一致性维护方法 | |
CN112598525A (zh) | 一种智能合约分簇并行的区块链实现方法及装置 | |
CN103077019B (zh) | 一种图形化参数批量维护方法和装置 | |
CN114328718A (zh) | 一种基于Hyperledger Fabric的跨区块链共识方法 | |
CN111694873A (zh) | 虚拟资源包的处理方法、装置及数据库服务器 | |
CN112925614A (zh) | 一种分布式事务处理方法、装置、介质和设备 | |
CN106648840A (zh) | 事务之间的时序确定方法和装置 | |
CN114564500A (zh) | 在区块链系统中实现结构化数据存储和查询的方法和系统 | |
CN103502970B (zh) | 一种键值对的操作方法及装置 | |
US11151157B2 (en) | Database management method | |
CN116827957B (zh) | 基于多区块链的信息处理方法、装置、设备以及介质 | |
CN113111125A (zh) | 一种基于区块链的业务存证方法 | |
CN105892954A (zh) | 基于多副本的数据存储方法和装置 | |
WO2019024631A1 (zh) | 区块链轻量化处理方法、区块链节点及存储介质 | |
CN115455022A (zh) | 跨链中继机制的账户序号一致性保障方法 | |
CN112381650B (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 |