CN115065687A - Hyperledger Fabric与以太坊间的跨链数据共享方法及系统 - Google Patents

Hyperledger Fabric与以太坊间的跨链数据共享方法及系统 Download PDF

Info

Publication number
CN115065687A
CN115065687A CN202210517392.3A CN202210517392A CN115065687A CN 115065687 A CN115065687 A CN 115065687A CN 202210517392 A CN202210517392 A CN 202210517392A CN 115065687 A CN115065687 A CN 115065687A
Authority
CN
China
Prior art keywords
cross
chain
transaction
data packet
data
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
Application number
CN202210517392.3A
Other languages
English (en)
Other versions
CN115065687B (zh
Inventor
宋兆雄
陈思远
龙博
郭仪
姜陈浩
杨涵显
张瀚文
孙毅
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Institute of Computing Technology of CAS
Original Assignee
Institute of Computing Technology of CAS
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Institute of Computing Technology of CAS filed Critical Institute of Computing Technology of CAS
Priority to CN202210517392.3A priority Critical patent/CN115065687B/zh
Publication of CN115065687A publication Critical patent/CN115065687A/zh
Application granted granted Critical
Publication of CN115065687B publication Critical patent/CN115065687B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/104Peer-to-peer [P2P] networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION 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/00Finance; Insurance; Tax strategies; Processing of corporate or income taxes
    • G06Q40/04Trading; Exchange, e.g. stocks, commodities, derivatives or currency exchange
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/08Network architectures or network communication protocols for network security for authentication of entities
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/12Applying verification of the received information
    • H04L63/123Applying verification of the received information received data contents, e.g. message integrity
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1095Replication or mirroring of data, e.g. scheduling or transport for data synchronisation between network nodes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3247Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures

Abstract

本发明提出一种Hyperledger Fabric与以太坊间的跨链数据共享方法和系统,提出了一种同构/异构区块链平台间可信的通用跨链数据共享方法,设计了一套通用的跨链数据格式,让不同区块链平台的数据能够高效互通;提出了对以太坊及Hyperledger Fabric的交易数据以及非交易数据验证方法;利用可信第三方对以太坊及Hyperledger Fabric的跨链数据进行验证、背书,保障了双方交易数据以及非交易数据的可信性;整体方案对双方区块链底层均无改动,侵入性低,适配难度低。

Description

Hyperledger Fabric与以太坊间的跨链数据共享方法及系统
技术领域
本发明涉及一种新型的Hyperledger Fabric与以太坊间的跨链数据共享方法,属于区块链跨链技术研究领域。
背景技术
区块链技术是一种以密码学为基础,结合了P2P网络技术、共识算法等多种技术的分布式账本技术。区块链具有可追溯、不可篡改、多方参与等特性,创造性地解决了现有中心化模型带来的许多问题。图灵完备的智能合约的出现使区块链具备了实现上层业务逻辑及承载垂直行业应用的能力,也让区块链技术的应用不再仅仅局限于金融领域。随着服务各行业的区块链应用不断增加,如何打破基于不同区块链技术的上层应用的边界成为当今区块链技术急需解决的问题。
以太坊和Hyperledger Fabric都是现在主流的区块链平台,已被各行业在生产系统中广泛采用。随着区块链技术的发展,不同区块链上已承载着众多成熟应用,基于Hyperledger Fabric与基于以太坊的应用之间也可能会有数据共享的需求。区块链应用间的数据共享需要将一条链上的数据可信地传输至另一条链,本质上是一个跨链信息(交易数据/非交易数据)传输及验证的过程。
交易数据指一个区块链系统中,包含在区块中的交易信息,根据不同区块链的结构特点,用户可以通过维护全量账本数据或者通过SPV的方法验证交易数据的存在性以及有效性;非交易数据指一个区块链系统中除了交易数据的其他数据,比如区块链系统的状态数据、区块头数据等,根据不同区块链的结构特点,用户可以通过维护全量账本数据或者利用特定区块链系统提供的状态验证等方法验证非交易信息的有效性。
跨链技术,也被称为区块链互操作技术,是指跨越单一区块链系统的数据可信边界(共识机制作用范围),实现独立的两个或多个区块链间的有效协作,进而实现可信的信息/价值跨链流通。
现有主流的跨链技术方案主要有以下两类:(1)侧重于解决跨链资产交换、资产转移的解决方案,例如BTCRelay、哈希时间锁等;(2)打造多链跨链生态的方案,例如Cosmos、Polkadot。
BTCRelay在以太坊中利用智能合约维护完整的比特币区块头信息,允许以太坊智能合约在没有任何第三方的情况下安全地验证比特币交易。这样用户就可以在以太坊Dapp中使用比特币进行支付。
哈希时间锁方案巧妙地利用了哈希锁跟时间锁,能够在两条独立区块链间实现资产交换。哈希时间锁方案更注重于解决资产交换中的原子性问题,并不能实现任意应用数据的跨链共享。
BTCRelay、哈希时间锁等对跨链资产转移、交换这类问题给出了很好的解决方案,然而并不能解决区块链链上应用的通用数据共享、传递这些问题。
Cosmos主张打造一个“万链互联”的异构多链互联生态。Cosmos跨链的核心是IBC跨链协议,用来支持区块链间信息互通。Cosmos提出利用Cosmos Hub连接多个Zone,新接入的链通过IBC协议与Cosmos Hub通信从而接入整个跨链系统。对于不满足IBC指定特性的链,Cosmos提出PegZone的概念,来实现对异构区块链的连接互通。
但是,在Cosmos的解决方案中,目前只有由Cosmos SDK搭建的区块链能够直接使用其提供的IBC模块进行跨链交互。对于以太坊这类使用概率性共识的异构区块链,需要先用PegZone进行适配,而PegZone本身是一条由Cosmos SDK搭建的区块链。因此如果使用Cosmos的解决方案来实现以太坊和Hyperledger Fabric的互通,需要使用PegZone对以太坊的接入进行适配,并且需要在Hyperledger Fabric上实现IBC协议。对以太坊以及Hyperledger Fabric这类非Cosmos SDK搭建的区块链,IBC仅仅提供了一个跨链的解决方案框架,其跨链过程中需要用到的验证模块、能力模块等都需要开发者主动适配,该解决方案开发难度大,适配难度高,系统整体较为繁重。
Polkadot是一个由中继链(Relay Chain)和多条平行链(Parachain)以及平行链线程(Parathread)构成的分片多链网络。平行链共享中继链的安全性。Polkadot提出的XCMP协议用来实现中继链与平行链以及平行链与平行链之间的通信。在与异构区块链相连接时,则需要用Polkadot的平行链充当桥来实现。
Polkadot的主要目标是打造一个同构多链的公链生态体系,各个平行链接在中继链上,平行链间通过XCMP协议跨链互通,这种中继链的方案更适合多链互联,并且在与异构区块链相连接时,则需要用Polkadot的平行链充当桥来实现,该方案同样有开发难度大,适配难度高,系统整体较为繁重的问题。我们的目标是能让Hyperledger Fabric和以太坊两条链跨链信息共享,因此在该场景下更需要一种直连的轻量级解决方案。
在跨链过程中,由于数据跨越了单个区块链系统,目的链应用接受跨链数据之前,需要验证该跨链数据确实来自对端链,并且已在对端链达成了共识,因此验证过程是跨链数据可信传输的关键所在。得益于以太坊的底层实现,现有技术已经能很好地对以太坊中的交易存在性等进行验证;然而对Hyperledger Fabric交易的验证尚且没有一个通用的方案,现有技术还包括通过验证Hyperledger Fabric中交易的背书节点来验证交易存在性,但由于Hyperledger Fabric是先执行后排序,仅验证背书信息不能保证该交易一定被执行,因此其方法也存在一定的缺陷。
综上,现有跨链方案均不能很好地支持Hyperledger Fabric与以太坊间的跨链数据共享。因此需要一种轻量级的Hyperledger Fabric与以太坊间的跨链数据共享方法。
发明内容
针对现有技术的不足,本发明提出了一种可信的、侵入性低、轻量级的Hyperledger Fabric与以太坊间的跨链数据共享方法,其中包括:
步骤1、第一区块链跨链应用调用第一区块链的跨链数据处理合约,跨链数据处理合约根据调用参数生成跨链数据包,并将该跨链数据包存于第一区块链的跨链数据处理合约的任务队列中,该跨链数据包包括:标识是否属于交易数据的数据类型标识符、跨链数据内容、源链信息、目的链信息、控制信息、辅助信息;
步骤2、由第一区块链网关节点扫描第一区块链中跨链数据处理合约的任务队列,选取一个未处理的跨链数据包作为当前数据包,根据其数据类型标识符在第一区块链上发起交易,调用与其数据类型标识符相对应的数据处理函数将第一区块链的跨链数据处理合约中的任务队列中的该跨链数据包标记为已转发;
步骤3、该第一区块链网关节点将该交易的ID以及该当前数据包发送给可信第三方验证节点;
步骤4、该可信第三方验证节点根据其维护的第一区块链账本,验证该交易的有效性以及相应跨链数据的正确性,将验证结果返回该第一区块链网关节点。
步骤5、根据该验证结果,该第一区块链网关节点将可信第三方验证节点签名以及该当前数据包转发给第二区块链网关节点;
步骤6、该第二区块链网关节点在第二区块链上发起交易,将该当前数据包以及该可信第三方验证节点签名作为输入,调用跨链数据处理合约的接受跨链交易函数;该函数就是跨链数据处理合约中接受跨链数据包的入口,由该函数再去调用下面的验证合约、应用合约;
步骤7、第二区块链的跨链数据处理合约调用验证合约,以验证可信第三方验证合约的签名,得到验证结果;
步骤8、若该验证结果为通过,第二区块链的跨链数据处理合约解析该当前数据包,根据该当前数据包中目的链信息,调用第二区块链中应用合约的相应函数,以将该当前数据包中跨链数据内容共享至目的链。
所述的Hyperledger Fabric与以太坊间的跨链数据共享方法,其中该第一区块链的区块链平台为以太坊,该第二区块链的区块链平台为Hyperledger Fabric。
所述的Hyperledger Fabric与以太坊间的跨链数据共享方法,其中该第一区块链的区块链平台为Hyperledger Fabric,该第二区块链的区块链平台为以太坊。
所述的Hyperledger Fabric与以太坊间的跨链数据共享方法,其中该步骤4包括:
步骤41、该可信第三方验证节点接收到从以太坊网关发来的跨链数据包以及跨链数据转发交易哈希;
步骤42、该可信第三方验证节点根据跨链数据转发交易哈希在其维护的账本中查找该交易以及其收据,验证交易是否存在;
步骤43、该可信第三方验证节点解析交易的输入字段,获取合约调用的函数及其参数,根据调用函数得到该当前数据包是交易数据包则执行步骤44,否则该跨链数据包是非交易数据包,则执行步骤45;
步骤44、该可信第三方验证节点用合约的调用参数与接收到的该当前数据包进行比对,验证交易内容正确,执行步骤46;
步骤45、该可信第三方验证节点根据该当前数据包中辅助信息字段确定待验证的非交易数据类型,然后在其维护的以太坊节点中查询相应信息,与该当前数据包进行比对,验证其内容正确,执行步骤46;
步骤46、该可信第三方验证节点确认该交易的确认区块数,以确保该交易不可逆,然后验证该交易中收据信息的status字段,如果为1说明交易执行结果有效;
步骤47、该可信第三方验证节点对该当前数据包进行签名,将该当前数据包以及签名信息返回给以太坊方的网关。
所述的Hyperledger Fabric与以太坊间的跨链数据共享方法,其中该步骤4包括:
步骤41、该可信第三方验证节点接收从Hyperledger Fabric网关发来的该当前数据包以及跨链数据转发交易的txID;
步骤42、该可信第三方验证节点根据接收到的txID在其维护的HyperledgerFabric跨链通道账本中查找该交易,验证交易是否存在;
步骤43、该可信第三方验证节点解析该交易的链码调用及其参数信息,根据调用函数进行判断,根据调用函数得到该当前数据包是交易数据包则执行步骤44,如果该当前数据包是非交易数据包,则执行步骤45;
步骤44、该可信第三方验证节点用链码的调用参数与接收到的该当前数据包进行比对,验证交易内容正确,执行步骤46;
步骤45、该可信第三方验证节点根据该当前数据包中的辅助信息字段确定待验证的非交易数据类型,然后在其维护的Hyperledger Fabric节点中查询相应信息,与当前数据包进行比对,验证内容正确,执行步骤46;
步骤46、该可信第三方验证节点根据该交易的txID查询交易所在区块中的元数据信息,确保该交易对应的ValideCode为0,说明该交易执行结果有效;
步骤47、该可信第三方验证节点对该当前数据包进行签名,将该当前数据包以及签名信息返回给Hyperledger Fabric网关。
所述的Hyperledger Fabric与以太坊间的跨链数据共享方法,其中该当前数据包为Hyperledger Fabric方数据共享应用创建新的订单,将订单信息序列化后,以待传输的字节序列以及对端链的标识信息作为参数,调用跨链数据处理链码中的交易数据跨链接口构造而成;
该步骤8包括:跨链数据处理合约解析出跨链数据包的目的应用合约信息,将该当前数据包中的字节序列作为参数,调用数据共享应用合约的接收订单函数,HyperledgerFabric方新创建的订单成功被共享至以太坊方。
所述的Hyperledger Fabric与以太坊间的跨链数据共享方法,其中该当前数据包为以太坊方数据共享应用选择一个接收到的订单进行确认并且填写发票信息,将信息序列化后,将待传输的字节序列以及对端链的标识信息作为参数,调用跨链数据处理合约中的交易数据跨链接口,构造而成;
该步骤8包括:跨链数据处理链码解析出跨链数据包的目的应用链码信息,将跨链数据包中的字节序列作为参数,调用数据共享应用链码的确认订单函数,以太坊上的订单确认信息成功被传输到Hyperledger Fabric的相应应用中。
所述的Hyperledger Fabric与以太坊间的跨链数据共享方法,其中该当前数据包为以太坊方数据共享应用,将待共享的账户地址及余额序列化后,将字节序列、非交易数据的具体类型、对端链标识信息作为参数调用跨链数据处理合约中的非交易数据跨链接口,构造而成;
该步骤8包括:跨链数据处理链码解析出当前数据包的目的应用链码信息,然后将当前数据包中的待传输字节序列作为参数,调用相应应用链码。
本发明还提出了一种Hyperledger Fabric与以太坊间的跨链数据共享系统,其中包括:
第一区块链跨链应用调用第一区块链的跨链数据处理合约,跨链数据处理合约根据调用参数生成跨链数据包,并将该跨链数据包存于第一区块链的跨链数据处理合约的任务队列中,该跨链数据包包括:标识是否属于交易数据的数据类型标识符、跨链数据内容、源链信息、目的链信息、控制信息、辅助信息;
第一区块链网关节点,扫描第一区块链中跨链数据处理合约的任务队列,选取一个未处理的跨链数据包作为当前数据包,根据其数据类型标识符在第一区块链上发起交易,调用与其数据类型标识符相对应的数据处理函数将第一区块链的跨链数据处理合约中的任务队列中的该跨链数据包标记为已转发;该第一区块链网关节点将该交易的ID以及该当前数据包发送给可信第三方验证节点;根据验证结果,该第一区块链网关节点将可信第三方验证节点签名以及该当前数据包转发给第二区块链网关节点;
可信第三方验证节点,根据其维护的第一区块链账本,验证该交易的有效性以及相应跨链数据的正确性,将验证结果返回该第一区块链网关节点;
第二区块链网关节点,在第二区块链上发起交易,将该当前数据包以及该可信第三方验证节点签名作为输入,调用跨链数据处理合约的接受跨链交易函数;第二区块链的跨链数据处理合约调用验证合约,以验证可信第三方验证合约的签名,得到验证结果;若该验证结果为通过,第二区块链的跨链数据处理合约解析该当前数据包,根据该当前数据包中目的链信息,调用第二区块链中应用合约的相应函数,以将该当前数据包中跨链数据内容共享至目的链。
本发明还提出了一种存储介质,用于存储执行所述任意一种Hyperledger Fabric与以太坊间的跨链数据共享方法的程序。
由以上方案可知,本发明的优点在于:
本发明提出了一种Hyperledger Fabric与以太坊间的跨链数据共享方法,设计了一套通用的跨链数据格式,让不同区块链平台的数据能够高效互通;提出了对以太坊及Hyperledger Fabric的交易数据以及非交易数据验证流程;利用可信第三方对以太坊及Hyperledger Fabric的跨链数据进行验证、背书,能够对双方交易数据以及非交易数据进行可信地传递;整体方案对双方区块链底层均无改动,侵入性低,适配难度低。
附图说明
图1为数据共享应用流程图;
图2为系统整体拓扑图;
图3为以太坊网关转发跨链数据至Hyperledger Fabric网关过程示意图;
图4为可信第三方验证以太坊跨链数据过程示意图;
图5为Hyperledger Fabric网关转发跨链数据至以太坊网关过程示意图;
图6为可信第三方验证Hyperledger Fabric跨链数据过程示意图;
图7为Hyperledger Fabric方应用向以太坊方应用同步数据过程示意图;
图8为以太坊方应用向Hyperledger Fabric方应用同步数据过程示意图;
图9为以太坊方应用向Hyperledger Fabric方应用共享账户余额过程示意图。
具体实施方式
由于两种平台底层技术不同,共识、区块结构等都有很大差异,想要实现Hyperledger Fabric与以太坊间的跨链数据共享,有以下难点。
(1)如何设计一个既能共享交易数据又能共享非交易数据的方案:我们认为一个区块链系统中有两类数据,一类是封装在区块体中的交易数据,比如以太坊中,封装在交易结构中的nonce、value以及合约调用的参数等信息。另一类是非交易数据,非交易数据与区块链系统自身有关,比如状态数据、区块头数据等。当数据跨越了单个区块链系统,对端需要对跨链数据进行验证,目前大多验证通常指的是对区块链的交易验证即对上述的第一类数据的验证,因此需要设计一个方法使非交易数据也能够被可信传递。
(2)如何安全有效地验证以太坊、Hyperledger Fabric的交易数据:要实现应用数据的可信共享,以太坊和Hyperledger Fabric双方都需要对跨链数据进行安全有效地验证。以太坊这类基于POW共识的区块链,由于概率性共识带来的分叉问题,为了保证安全性,验证过程中还需要考虑确认区块数量的问题,即经过多少个块,才能认为一笔交易成功被记录在链上且不可逆。Hyperledger Fabric使用PBFT共识算法,PBFT算法是一种确定性共识算法,不会出现分叉问题,不需要考虑确认区块数量的问题。除了确认区块数量问题,以太坊和Hyperledger Fabric交易验证都需要对交易自身进行存在性、有效性等验证,因此需要设计出能够安全有效地验证以太坊以及Hyperledger Fabric交易信息的方法。
(3)如何在实现数据共享的同时,不对以太坊和Hyperledger Fabric底层做侵入性改造:现有区块链应用已趋于成熟,设计跨链数据共享的方案时,需要尽量不对区块链底层进行侵入性改造。
为了解决上述问题,本发明提出了一种基于可信第三方验证的HyperledgerFabric与以太坊间的跨链数据共享方法,主要包括以下几个层面:
(1)本发明提出了一种轻量级的,基于直连方式的解决方案。由以太坊、Hyperledger Fabric双方链上的参与方都信任的一个第三方,分别运行一个以太坊全节点、Hyperledger Fabric验证组织节点。由该第三方对跨链数据(包含交易数据以及非交易数据)进行验证、背书,链上的验证合约/链码只需要对可信第三方的背书结果进行验证,不需要各自维护一个对端链的节点辅助验证或者接入中继链。
(2)本发明提出了了对以太坊、Hyperledger Fabric跨链交易验证的方法。一般来说,想要验证一笔交易在某一个区块链系统中正确被执行且被全局共识,需要进行四个环节的验证:a)验证账本合法性,即需要确认用来验证交易的账本是该区块链系统的主链账本;b)验证交易存在性,即待验证交易已经被成功打包进主链账本的一个区块中;c)验证交易内容一致性,即验证交易内容如合约/链码调用信息,调用参数等与其所声明的内容一致;d)验证交易有效,即验证交易已经成功被执行,交易结果已被全局共识。
本发明中,以太坊交易确认需要等待的区块数量设置为37,即只有在最新区块高度与交易所在区块高度之差大于等于37时,才认为交易不可逆。除了以太坊的交易确认区块数量问题,验证以太坊和Hyperledger Fabric交易,都需要进行上述四个环节的验证。
(3)本发明提出了侵入性低的基于智能合约的处理方案。该方案中,不对区块链系统底层进行改动,侵入性、适配难度更低。在以太坊中,只需要部署跨链数据处理合约以及相应的验证合约,不需要对平台进行改造,跨链应用只需要调用跨链数据处理合约即可完成数据的共享;在Hyperledger Fabric中,一个Hyperledger Fabric网络可以分为多个独立的账本,每个账本相互隔离,一个账本称为一个通道(channel),通道内有多个组织,每个组织可以有多个节点共同维护一个通道,本发明的方案中,为了减小对HyperledgerFabric原链上的业务组织的影响,单独划出一个验证组织来对跨链信息进行处理。Hyperledger Fabric中有跨链数据处理链码以及验证链码,应用链码只需要调用跨链数据处理链码的相应接口,即可完成信息共享,这个过程没有对底层平台进行改造。
为让本发明的上述特征和效果能阐述的更明确易懂,下文特举实施例,并配合说明书附图作详细说明如下。
(1)本发明设计了Hyperledger Fabric与以太坊间的跨链数据共享方法。本发明中,由跨链应用主动在链上发起跨链请求;借助链下网关节点发现跨链请求并处理跨链数据,完成跨链数据的传输工作;借助可信第三方验证节点,完成跨链数据的验证及背书工作。
区块链应用需要传输的数据有:应用相关数据、应用所在合约的状态数据、应用所在区块链的区块头数据等。本发明中,跨链数据被封装在源区块链的交易中,以确保跨链数据被源链共识,并且能在链外对该跨链数据进行验证。跨链数据由此分为两类:交易数据以及非交易数据,跨链数据处理合约利用与区块链系统无关的应用数据构建交易数据跨链数据包,利用与区块链系统相关的数据(状态数据、区块头数据等)构建非交易数据跨链数据包。网关发起跨链数据转发交易,将跨链数据包封装在跨链数据转发交易中。验证者在链外通过验证该跨链数据转发交易在源链上的存在性以及有效性就可以验证交易数据的正确性;对于非交易数据,还需要验证跨链数据包内容的正确性,即需要确认该跨链数据包中与区块链系统相关的数据正确。
区块链应用调用跨链数据处理合约/链码的交易/非交易数据处理接口,跨链数据处理合约/链码根据应用传入的跨链数据构造相应跨链数据包并将其存于该合约/链码的任务队列中。
由源区块链方的网关不断轮询其跨链数据处理合约/链码的任务队列,通过发起跨链数据转发交易,处理未转发的跨链数据包。经过这两步的处理,跨链数据包被封装在跨链数据转发交易中。由源区块链网关将跨链数据包以及该数据包正确性证明(可信第三方验证节点背书签名)转发给对端网关。
网关将跨链数据转发交易的交易哈希/txID以及跨链数据包转发给可信第三方验证节点,由可信第三方验证节点验证跨链数据包的正确性然后返回给网关节点背书签名。源链网关将跨链数据包以及该数据包正确性证明(可信第三方验证节点背书签名)转发给对端网关。因此目的链只需要验证可信第三方验证节点的签名,即可完成对跨链数据包的正确性验证。
由目的链的跨链数据处理合约/链码解析跨链数据包,根据包中的目的应用及目的应用函数调用应用合约/链码,将跨链数据传递到目的链的跨链应用。
(2)本发明还设计了通用的跨链共享数据格式。由于处理对象跨越了单个区块链系统,而独立区块链系统中的节点并没有与其他区块链系统交互的能力,因此需要链外的节点接入区块链系统,使其能够在该区块链系统中进行消息处理,并将跨链信息转发至其他区块链系统。为了实现跨链数据的传输,本发明提出了一种统一跨链数据格式,指定了需要交互的上层应用标识、底层区块链标识、传输控制信息以及业务数据等信息。具体数据格式如下表所示。
表格1跨链数据包结构
属性 类型 说明
fromChain string 源链ID
fromApp string 源应用
fromUser string 源用户ID
toChain string 目的链ID
toApp string 目的应用
toService string 目的应用函数
nonce int 交易nonce值
opCode bool 交易数据/非交易数据
reqData string 待传输数据
extraData string 辅助信息
(3)本发明还提出了以太坊、Hyperledger Fabric交易的链外验证方法。由于数据对象跨越了单个区块链系统的信任边界,为了保证数据的可信传递,使目的链能够对源链数据进行验证并确定接收到的数据已经在对端链上达成了全局的共识,本发明利用可信第三方验证节点对跨链数据验证、背书。对以太坊交易的验证流程如下:
可信第三方验证节点接收待验证的以太坊交易哈希及相应跨链数据包。
a)验证账本的合法性。本发明中可信第三方验证节点自己维护一个完整的账本,账本的完整性、合法性可以保障。
b)验证交易的存在性。可信第三方验证节点根据待验证的以太坊交易哈希在其维护的以太坊帐本中查找该交易,如果能够查找到该交易及其收据的完整信息,说明该交易存在于帐本中。
c)验证交易的内容一致性。可信第三方验证节点根据步骤b中利用交易哈希查询到的交易内容,获取合约调用信息,验证合约调用正确,且调用参数与接收到的跨链数据包能够正确匹配,说明该交易的内容正确。
d)验证交易的有效性。可信第三方验证节点首先确认该交易的确认区块数,即最新区块高度与交易所在区块高度之差大于等于37,确保该交易不可逆,然后验证交易收据信息中的status字段,确保交易已经被有效执行。
对Hyperledger Fabric交易的验证流程如下:
可信第三方验证节点接收待验证的Hyperledger Fabric交易txID及相应的跨链数据包。
a)验证账本的合法性。本发明中可信第三方验证节点自己维护一个完整的账本,账本的完整性、合法性可以保障。
b)验证交易的存在性。可信第三方验证节点根据待验证的Hyperledger Fabric交易txID在验证节点维护的通道帐本中查找该交易,如果能够查找到该交易的完整信息,说明该交易存在于帐本中。
c)验证交易的内容一致性。可信第三方验证节点根据步骤b中利用txID查询到的交易内容,获取链码调用信息,验证链码调用正确,且调用参数与接收到的跨链数据包能够正确匹配,说明该交易的内容正确。
d)验证交易的有效性。可信第三方验证节点根据其维护的账本的元数据,查询该交易的ValidCode,如果ValidCode值为0,说明该交易已被正确执行,并且执行结果已写入账本,执行结果有效。
(4)支持通用数据共享的轻量级跨链方案。不同于Cosmos方案中需要每条链维护一个对端链的轻节点,也不同于Polkadot方案中需要一个中继链负责整个网络的安全,本发明用可信第三方验证节点对双方链的跨链数据进行验证,链上仅需要验证可信第三方对跨链数据包的签名来保证跨链数据包的可信传输。这个方案是无需中继链的直连方案,整体复杂度更低。对以太坊、Hyperledger Fabric交易信息的验证流程在(2)中已描述;对双方链的非交易数据由可信第三方验证节点从其维护的以太坊全节点、Hyperledger Fabric验证组织节点中获取,然后传递给数据需求方,以传递以太坊账户余额信息为例:
可信第三方验证节点接收待验证的以太坊交易哈希及相应跨链数据包。
a)验证账本的合法性。本发明中可信第三方验证节点自己维护一个完整的账本,账本的完整性、合法性可以保障。
b)验证交易的存在性。可信第三方验证节点根据待验证的以太坊交易哈希在其维护的以太坊帐本中查找该交易,如果能够查找到该交易及其收据的完整信息,说明该交易存在于帐本中。
c)验证交易的内容一致性。可信第三方验证节点根据步骤b中利用交易哈希查询到的交易内容,获取合约调用信息,根据调用函数判断出该跨链数据包是传递以太坊账户余额的非交易数据包。可信第三方验证节点解析数据包中待验证部分,获取待查询的以太坊账户地址,然后根据其维护的以太坊节点查询该地址的余额信息,将查询结果与数据包中的余额信息比对,确认交易内容正确。
d)验证交易的有效性。可信第三方验证节点首先确认该交易的确认区块数,即最新区块高度与交易所在区块高度之差大于等于37,确保该交易不可逆,然后验证交易收据信息中的status字段,确保交易已经被有效执行。
(5)侵入性低、对现有区块链系统改造少的链上处理方案。在Cosmos的IBC协议中,其底层区块链需要具备模块系统、时间戳访问能力、异常/回滚系统等[3]。不同于IBC协议,本发明不对Hyperledger Fabric以及以太坊做任何底层技术修改,仅利用HyperledgerFabric与以太坊支持的能力,完成跨链数据共享的流程。具体而言,在以太坊中,部署跨链数据处理合约对跨链相关的数据进行处理,部署验证合约验证可信第三方验证节点的签名;同样的,在Hyperledger Fabric中,部署跨链数据处理链码以及验证链码完成相同的功能。
本发明提出了一种Hyperledger Fabric与以太坊间的跨链数据共享方法,本实施方式中,在以太坊以及Hyperledger Fabric相应的跨链通道中部署订单共享应用合约/链码、跨链数据处理合约/链码、验证合约/链码。
其中,跨链共享应用合约/链码实现了跨链订单共享应用的应用逻辑。该应用能够实现以太坊平台和Hyperledger Fabric平台上不同主体共同完成贸易订单的创建、确认、开票、物流信息同步一系列流程,应用整体流程如图1所示。
跨链数据处理合约/链码负责应用注册、维护跨链任务队列、接收跨链数据等工作。验证合约/链码负责对可信第三方验证节点的背书信息的验证工作。
除了部署合约/链码,还部署了一个以太坊方跨链网关、一个Hyperledger Fabric方跨链网关、一个可信第三方验证节点。整体拓扑如下图2所示。
以太坊与Hyperledger Fabric方各有一个网关节点,用来收发跨链数据。以太坊方的网关节点有一个以太坊上的账户,并且该账户有充足的余额以支持其在以太坊上发起交易,同时它能够与可信第三方验证节点和Hyperledger Fabric方的网关节点通信;Hyperledger Fabric方的网关节点作为相应跨链通道中验证组织下的一个节点,能在该通道发起交易,同时也能够与可信第三方验证节点和以太坊方的网关节点通信。
可信第三方验证节点,由一个以太坊和Hyperledger Fabric方都信任的第三方,同时运行一个以太坊全节点、Hyperledger Fabric相应通道中的验证组织节点,对双方的交易数据以及非交易数据进行验证、背书。
1.以太坊网关转发跨链数据至Hyperledger Fabric网关流程:
该流程包括以太坊方的网关节点向Hyperledger Fabric方网关转发跨链数据的具体流程。
1、以太坊方的网关不断扫描存于以太坊跨链数据处理合约中的跨链任务队列;
2、以太坊方网关选定一个尚未转发的跨链数据包,根据其数据包类型(交易数据/非交易数据),在以太坊上调用不同的函数,发起跨链数据转发交易,将该跨链数据包的转发状态标记为已处理;可信第三方验证节点收到上述交易的时候,能够根据调用的函数,执行对应交易数据或非交易数据的验证流程;
3、以太坊方网关解析跨链数据包中目的链的地址,根据网关配置匹配出相应可信第三方验证节点及对端网关地址信息;
4、以太坊方网关将步骤2中的跨链数据包以及跨链数据转发交易的交易哈希一起发给可信第三方验证节点;
5、可信第三方验证节点验证跨链数据后将跨链数据包以及背书签名返回给以太坊方的网关;
6、以太坊方的网关将跨链数据包以及可信第三方的背书签名一起发给Hyperledger Fabric端的网关处理。
2.可信第三方验证以太坊跨链数据流程
该流程包含了可信第三方验证节点验证从以太坊网关接收并验证跨链数据的具体流程。
1、可信第三方验证节点接收到从以太坊网关发来的跨链数据包以及跨链数据转发交易哈希;
2、可信第三方验证节点根据跨链数据转发交易哈希在其维护的账本中查找该交易以及其收据,验证交易存在;
3、可信第三方验证节点解析交易的input字段,获取合约调用的函数及其参数,根据调用函数进行判断,如果该跨链数据包是交易数据包则执行步骤4,如果该跨链数据包是非交易数据包,则执行步骤5。
4、可信第三方验证节点用合约的调用参数与接收到的跨链数据包进行比对,验证交易内容正确,然后转到步骤65、可信第三方验证节点根据跨链数据包中的辅助信息字段确定待验证的非交易数据类型,然后在其维护的以太坊节点中查询相应信息,与跨链数据包进行比对,验证其内容正确
6、可信第三方验证节点首先确认该交易的确认区块数,即最新区块高度与交易所在区块高度之差大于等于37,确保该交易不可逆,然后验证该交易收据信息中的status字段,如果为1说明交易执行结果有效
7、可信第三方验证节点对跨链数据包进行签名,将数据包以及签名信息返回给以太坊方的网关
3.Hyperledger Fabric网关转发跨链数据至以太坊网关流程
该流程包括Hyperledger Fabric方的网关节点向以太坊方网关转发跨链数据的具体流程。
1、Hyperledger Fabric方的网关不断扫描存于跨链通道的跨链数据处理链码中的任务队列
2、Hyperledger Fabric方的网关选定一个尚未转发的跨链数据包,根据其数据包类型(交易数据/非交易数据),在通道内调用不同的函数,发起跨链数据转发交易,将该交易的转发状态标记为已处理
3、Hyperledger Fabric方的网关解析跨链数据包中目的链的地址,根据网关配置匹配出相应可信第三方验证节点以及对端链网关地址信息
4、Hyperledger Fabric方的网关将步骤2中的跨链数据包以及跨链数据转发交易的txID一起发给可信第三方验证节点
5、可信第三方验证节点验证跨链数据后将跨链数据包以及背书签名返回给Hyperledger Fabric方的网关
6、Hyperledger Fabric方的网关将跨链数据包以及可信第三方的背书签名一起发给以太坊的网关处理
4.可信第三方验证Hyperledger Fabric跨链数据流程
该流程包含了可信第三方验证节点验证从Hyperledger Fabric网关接收并验证跨链数据的具体流程。
1、可信第三方验证节点接收到从Hyperledger Fabric网关发来的跨链数据包以及跨链数据转发交易的txID
2、可信第三方验证节点根据接收到的txID在其维护的Hyperledger Fabric跨链通道账本中查找该交易,验证交易存在
3、可信第三方验证节点解析该交易的链码调用及其参数信息,根据调用函数进行判断,如果该跨链数据包是交易数据包则执行步骤4,如果该跨链数据包是非交易数据包,则执行步骤5。
4、可信第三方验证节点用链码的调用参数与接收到的跨链数据包进行比对,验证交易内容正确,然后转到步骤65、可信第三方验证节点根据跨链数据包中的辅助信息字段确定待验证的非交易数据类型,然后在其维护的Hyperledger Fabric节点中查询相应信息,与跨链数据包进行比对,验证内容正确
6、可信第三方验证节点根据该交易的txID查询交易所在区块中的元数据信息,确保该交易对应的ValideCode为0,说明该交易执行结果有效
7、可信第三方验证节点对跨链数据包进行签名,将数据包以及签名信息返回给Hyperledger Fabric方的网关
5.Hyperledger Fabric方应用向以太坊方应用同步数据流程
该流程包括从Hyperledger Fabric上的数据共享应用调用跨链接口,经过跨链数据处理链码、网关等一系列处理到达以太坊的的整体流程,以上述跨链订单共享应用中的订单创建流程为例进行说明。
1、Hyperledger Fabric方数据共享应用创建新的订单,将订单信息序列化后,以待传输的字节序列以及对端链的标识等信息作为参数,调用跨链数据处理链码中的交易数据跨链接口
2、跨链数据处理链码的交易数据跨链接口被调用后,它构造跨链数据包,将跨链数据包及其类型信息(交易数据)放入跨链数据处理链码维护的任务队列中
3、Hyperledger Fabric网关轮询跨链数据处理链码中的任务队列,选取步骤2构造的跨链数据包,调用针对交易数据的转发函数,发起跨链数据转发交易,将该跨链数据包标记为已转发,并将该跨链数据包以及跨链数据转发交易的txID转发给可信第三方验证节点
4、可信第三方验证节点将验证结果返回给Hyperledger Fabric网关
5、Hyperledger Fabric网关拿到可信第三方验证节点返回的跨链数据包以及背书签名后,将它们转发给以太坊网关
6、以太坊网关接收到步骤5的消息后,将该跨链数据包以及可信第三方验证节点的签名作为参数调用以太坊上的跨链数据处理合约的接收跨链数据函数
7、跨链数据处理合约相应函数被调用后,该函数先调用验证合约,对可信第三方验证节点的签名进行检查,如果检查通过转到步骤88、跨链数据处理合约解析出跨链数据包的目的应用合约信息(数据共享应用的接收新订单函数),然后将跨链数据包中的字节序列作为参数,调用数据共享应用合约的接收订单函数,Hyperledger Fabric方新创建的订单成功被共享至以太坊方
6.以太坊方应用向Hyperledger Fabric方应用同步数据流程
该流程包括从以太坊上的数据共享应用调用跨链接口,经过跨链数据处理合约、网关等一系列处理到达Hyperledger Fabric的的整体流程,以上述跨链订单共享应用中的订单确认流程为例进行说明。
1、以太坊方数据共享应用选择一个接收到的订单进行确认并且填写发票信息,将信息序列化后,将待传输的字节序列以及对端链的标识等信息作为参数,调用跨链数据处理合约中的交易数据跨链接口
2、跨链数据处理合约的交易数据跨链接口被调用后,它构造跨链数据包,将跨链数据包及其类型(交易数据)放入跨链数据处理合约维护的任务队列中
3、以太坊网关轮询跨链数据处理合约的任务队列,选取步骤2构造的的跨链数据包,调用针对交易数据的转发函数,发起跨链数据转发交易,将该跨链数据包标记为已转发,并将该跨链数据包以及跨链数据转发交易的交易哈希转发给可信第三方验证节点
4、可信第三方验证节点将验证结果返回给以太坊网关
5、以太坊网关拿到可信第三方验证节点返回的跨链数据包以及背书签名后,将它们转发给Hyperledger Fabric网关
6、Hyperledger Fabric网关接收到步骤5的消息后,将该跨链数据包以及可信第三方验证节点的签名作为参数调用Hyperledger Fabric跨链通道中的跨链数据处理链码的接收跨链数据函数
7、跨链数据处理链码中的接收跨链数据函数被调用后,该函数先调用验证链码,对可信第三方验证节点的签名进行检查,如果检查通过转到步骤88、跨链数据处理链码解析出跨链数据包的目的应用链码信息(数据共享应用的确认订单函数),然后将跨链数据包中的字节序列作为参数,调用数据共享应用链码的确认订单函数,以太坊上的订单确认信息成功被传输到Hyperledger Fabric的相应应用中
7.以太坊方应用向Hyperledger Fabric方应用共享账户余额流程
该流程包括从以太坊上的数据共享应用调用非交易数据跨链接口,经过跨链数据处理合约、网关等一系列处理到达Hyperledger Fabric的的整体流程,以以太坊方应用向Hyperledger Fabric方应用共享账户余额为例进行说明。
1、以太坊方数据共享应用,将待共享的账户地址及余额序列化后,将字节序列、非交易数据的具体类型、对端链标识等信息作为参数调用跨链数据处理合约中的非交易数据跨链接口
2、跨链数据处理合约的非交易数据跨链接口被调用后,构造跨链数据包,将跨链数据包及其类型(非交易数据)放入跨链数据处理合约维护的任务队列中
3、以太坊网关轮询跨链数据处理合约的任务队列,选取步骤2构造的的跨链数据包,调用针对非交易数据的转发函数,发起跨链数据转发交易,将该跨链数据包标记为已转发,并将该跨链数据包以及跨链数据转发交易的交易哈希转发给可信第三方验证节点
4、可信第三方验证节点将验证结果返回给以太坊网关
5、以太坊网关拿到可信第三方验证节点返回的跨链数据包以及背书签名后,将它们转发给以Hyperledger Fabric网关
6、Hyperledger Fabric网关接收到步骤5的消息后,将该跨链数据包以及可信第三方验证节点的签名作为参数调用Hyperledger Fabric跨链通道中的跨链数据处理链码的接收跨链数据函数
7、跨链数据处理链码接收跨链数据函数被调用后,该函数先调用验证链码,对可信第三方验证节点的签名进行检查,如果检查通过转到步骤88、跨链数据处理链码解析出跨链数据包的目的应用链码信息,然后将跨链数据包中的待传输字节序列作为参数,调用相应应用链码。
以下为与上述方法实施例对应的系统实施例,本实施方式可与上述实施方式互相配合实施。上述实施方式中提到的相关技术细节在本实施方式中依然有效,为了减少重复,这里不再赘述。相应地,本实施方式中提到的相关技术细节也可应用在上述实施方式中。
本发明还提出了一种Hyperledger Fabric与以太坊间的跨链数据共享系统,其中包括:
第一区块链跨链应用调用第一区块链的跨链数据处理合约,跨链数据处理合约根据调用参数生成跨链数据包,并将该跨链数据包存于第一区块链的跨链数据处理合约的任务队列中,该跨链数据包包括:标识是否属于交易数据的数据类型标识符、跨链数据内容、源链信息、目的链信息、控制信息、辅助信息;
第一区块链网关节点,扫描第一区块链中跨链数据处理合约的任务队列,选取一个未处理的跨链数据包作为当前数据包,根据其数据类型标识符在第一区块链上发起交易,调用与其数据类型标识符相对应的数据处理函数将第一区块链的跨链数据处理合约中的任务队列中的该跨链数据包标记为已转发;该第一区块链网关节点将该交易的ID以及该当前数据包发送给可信第三方验证节点;根据验证结果,该第一区块链网关节点将可信第三方验证节点签名以及该当前数据包转发给第二区块链网关节点;
可信第三方验证节点,根据其维护的第一区块链账本,验证该交易的有效性以及相应跨链数据的正确性,将验证结果返回该第一区块链网关节点;
第二区块链网关节点,在第二区块链上发起交易,将该当前数据包以及该可信第三方验证节点签名作为输入,调用跨链数据处理合约的接受跨链交易函数;第二区块链的跨链数据处理合约调用验证合约,以验证可信第三方验证合约的签名,得到验证结果;若该验证结果为通过,第二区块链的跨链数据处理合约解析该当前数据包,根据该当前数据包中目的链信息,调用第二区块链中应用合约的相应函数,以将该当前数据包中跨链数据内容共享至目的链。
本发明还提出了一种存储介质,用于存储执行所述任意一种Hyperledger Fabric与以太坊间的跨链数据共享方法的程序。

Claims (10)

1.一种Hyperledger Fabric与以太坊间的跨链数据共享方法,其特征在于,包括:
步骤1、第一区块链跨链应用调用第一区块链的跨链数据处理合约,跨链数据处理合约根据调用参数生成跨链数据包,并将该跨链数据包存于第一区块链的跨链数据处理合约的任务队列中,该跨链数据包包括:标识是否属于交易数据的数据类型标识符、跨链数据内容、源链信息、目的链信息、控制信息、辅助信息;
步骤2、由第一区块链网关节点扫描第一区块链中跨链数据处理合约的任务队列,选取一个未处理的跨链数据包作为当前数据包,根据其数据类型标识符在第一区块链上发起交易,调用与其数据类型标识符相对应的数据处理函数将第一区块链的跨链数据处理合约中的任务队列中的该跨链数据包标记为已转发;
步骤3、该第一区块链网关节点将该交易的ID以及该当前数据包发送给可信第三方验证节点;
步骤4、该可信第三方验证节点根据其维护的第一区块链账本,验证该交易的有效性以及相应跨链数据的正确性,将验证结果返回该第一区块链网关节点。
步骤5、根据该验证结果,该第一区块链网关节点将可信第三方验证节点签名以及该当前数据包转发给第二区块链网关节点;
步骤6、该第二区块链网关节点在第二区块链上发起交易,将该当前数据包以及该可信第三方验证节点签名作为输入,调用跨链数据处理合约的接受跨链交易函数;
步骤7、第二区块链的跨链数据处理合约调用验证合约,以验证可信第三方验证合约的签名,得到验证结果;
步骤8、若该验证结果为通过,第二区块链的跨链数据处理合约解析该当前数据包,根据该当前数据包中目的链信息,调用第二区块链中应用合约的相应函数,以将该当前数据包中跨链数据内容共享至目的链;
该可信第三方是该第一区块链和该第二区块链共同信任的第三方节点,维护着该第一区块链和该第二区块链的账本数据,该第三方验证节点为单一主体或多主体或基于可信执行环境的验证节点。
2.如权利要求1所述的Hyperledger Fabric与以太坊间的跨链数据共享方法,其特征在于,该第一区块链的区块链平台为以太坊,该第二区块链的区块链平台为HyperledgerFabric。
3.如权利要求1所述的Hyperledger Fabric与以太坊间的跨链数据共享方法,其特征在于,该第一区块链的区块链平台为Hyperledger Fabric,该第二区块链的区块链平台为以太坊。
4.如权利要求2所述的Hyperledger Fabric与以太坊间的跨链数据共享方法,其特征在于,该步骤4包括:
步骤41、该可信第三方验证节点接收到从以太坊网关发来的跨链数据包以及跨链数据转发交易哈希;
步骤42、该可信第三方验证节点根据跨链数据转发交易哈希在其维护的账本中查找该交易以及其收据,验证交易是否存在;
步骤43、该可信第三方验证节点解析交易的输入字段,获取合约调用的函数及其参数,根据调用函数得到该当前数据包是交易数据包则执行步骤44,否则该跨链数据包是非交易数据包,则执行步骤45;
步骤44、该可信第三方验证节点用合约的调用参数与接收到的该当前数据包进行比对,验证交易内容正确,执行步骤46;
步骤45、该可信第三方验证节点根据该当前数据包中辅助信息字段确定待验证的非交易数据类型,然后在其维护的以太坊节点中查询相应信息,与该当前数据包进行比对,验证其内容正确,执行步骤46;
步骤46、该可信第三方验证节点确认该交易的确认区块数,以确保该交易不可逆,然后验证该交易中收据信息的status字段,如果为1说明交易执行结果有效;
步骤47、该可信第三方验证节点对该当前数据包进行签名,将该当前数据包以及签名信息返回给以太坊方的网关。
5.如权利要求3所述的Hyperledger Fabric与以太坊间的跨链数据共享方法,其特征在于,该步骤4包括:
步骤41、该可信第三方验证节点接收从Hyperledger Fabric网关发来的该当前数据包以及跨链数据转发交易的txID;
步骤42、该可信第三方验证节点根据接收到的txID在其维护的Hyperledger Fabric跨链通道账本中查找该交易,验证交易是否存在;
步骤43、该可信第三方验证节点解析该交易的链码调用及其参数信息,根据调用函数进行判断,根据调用函数得到该当前数据包是交易数据包则执行步骤44,如果该当前数据包是非交易数据包,则执行步骤45;
步骤44、该可信第三方验证节点用链码的调用参数与接收到的该当前数据包进行比对,验证交易内容正确,执行步骤46;
步骤45、该可信第三方验证节点根据该当前数据包中的辅助信息字段确定待验证的非交易数据类型,然后在其维护的Hyperledger Fabric节点中查询相应信息,与当前数据包进行比对,验证内容正确,执行步骤46;
步骤46、该可信第三方验证节点根据该交易的txID查询交易所在区块中的元数据信息,确保该交易对应的ValideCode为0,说明该交易执行结果有效;
步骤47、该可信第三方验证节点对该当前数据包进行签名,将该当前数据包以及签名信息返回给Hyperledger Fabric网关。
6.如权利要求3所述的Hyperledger Fabric与以太坊间的跨链数据共享方法,其特征在于,该当前数据包为Hyperledger Fabric方数据共享应用创建新的订单,将订单信息序列化后,以待传输的字节序列以及对端链的标识信息作为参数,调用跨链数据处理链码中的交易数据跨链接口构造而成;
该步骤8包括:跨链数据处理合约解析出跨链数据包的目的应用合约信息,将该当前数据包中的字节序列作为参数,调用数据共享应用合约的接收订单函数,HyperledgerFabric方新创建的订单成功被共享至以太坊方。
7.如权利要求2所述的Hyperledger Fabric与以太坊间的跨链数据共享方法,其特征在于,该当前数据包为以太坊方数据共享应用选择一个接收到的订单进行确认并且填写发票信息,将信息序列化后,将待传输的字节序列以及对端链的标识信息作为参数,调用跨链数据处理合约中的交易数据跨链接口,构造而成;
该步骤8包括:跨链数据处理链码解析出跨链数据包的目的应用链码信息,将跨链数据包中的字节序列作为参数,调用数据共享应用链码的确认订单函数,以太坊上的订单确认信息成功被传输到Hyperledger Fabric的相应应用中。
8.如权利要求2所述的Hyperledger Fabric与以太坊间的跨链数据共享方法,其特征在于,该当前数据包为以太坊方数据共享应用,将待共享的账户地址及余额序列化后,将字节序列、非交易数据的具体类型、对端链标识信息作为参数调用跨链数据处理合约中的非交易数据跨链接口,构造而成;
该步骤8包括:跨链数据处理链码解析出当前数据包的目的应用链码信息,然后将当前数据包中的待传输字节序列作为参数,调用相应应用链码。
9.一种Hyperledger Fabric与以太坊间的跨链数据共享系统,其特征在于,包括:
第一区块链跨链应用调用第一区块链的跨链数据处理合约,跨链数据处理合约根据调用参数生成跨链数据包,并将该跨链数据包存于第一区块链的跨链数据处理合约的任务队列中,该跨链数据包包括:标识是否属于交易数据的数据类型标识符、跨链数据内容、源链信息、目的链信息、控制信息、辅助信息;
第一区块链网关节点,扫描第一区块链中跨链数据处理合约的任务队列,选取一个未处理的跨链数据包作为当前数据包,根据其数据类型标识符在第一区块链上发起交易,调用与其数据类型标识符相对应的数据处理函数将第一区块链的跨链数据处理合约中的任务队列中的该跨链数据包标记为已转发;该第一区块链网关节点将该交易的ID以及该当前数据包发送给可信第三方验证节点;根据验证结果,该第一区块链网关节点将可信第三方验证节点签名以及该当前数据包转发给第二区块链网关节点;
可信第三方验证节点,根据其维护的第一区块链账本,验证该交易的有效性以及相应跨链数据的正确性,将验证结果返回该第一区块链网关节点;
第二区块链网关节点,在第二区块链上发起交易,将该当前数据包以及该可信第三方验证节点签名作为输入,调用跨链数据处理合约的接受跨链交易函数;第二区块链的跨链数据处理合约调用验证合约,以验证可信第三方验证合约的签名,得到验证结果;若该验证结果为通过,第二区块链的跨链数据处理合约解析该当前数据包,根据该当前数据包中目的链信息,调用第二区块链中应用合约的相应函数,以将该当前数据包中跨链数据内容共享至目的链。
10.一种存储介质,用于存储执行如权利要求1到8所述任意一种Hyperledger Fabric与以太坊间的跨链数据共享方法的程序。
CN202210517392.3A 2022-05-12 2022-05-12 Hyperledger Fabric与以太坊间的跨链数据共享方法及系统 Active CN115065687B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210517392.3A CN115065687B (zh) 2022-05-12 2022-05-12 Hyperledger Fabric与以太坊间的跨链数据共享方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210517392.3A CN115065687B (zh) 2022-05-12 2022-05-12 Hyperledger Fabric与以太坊间的跨链数据共享方法及系统

Publications (2)

Publication Number Publication Date
CN115065687A true CN115065687A (zh) 2022-09-16
CN115065687B CN115065687B (zh) 2024-05-07

Family

ID=83199310

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210517392.3A Active CN115065687B (zh) 2022-05-12 2022-05-12 Hyperledger Fabric与以太坊间的跨链数据共享方法及系统

Country Status (1)

Country Link
CN (1) CN115065687B (zh)

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112287029A (zh) * 2020-11-17 2021-01-29 北京物资学院 一种区块链多链跨链系统及其实现机制
CN112488679A (zh) * 2020-12-03 2021-03-12 陈鹏 一种区块链的跨链合约解析方法、中继链及跨链系统
CN112861190A (zh) * 2021-04-23 2021-05-28 腾讯科技(深圳)有限公司 数据跨链协同方法、系统及装置
CN113572825A (zh) * 2021-07-09 2021-10-29 中国科学院计算技术研究所 面向中继链跨链架构的接入控制与资源访问控制方法及系统
CN113890739A (zh) * 2021-08-17 2022-01-04 北京邮电大学 跨区块链的认证方法、装置、电子设备及介质
CN114338666A (zh) * 2021-12-03 2022-04-12 杭州趣链科技有限公司 对Fabric区块链跨链交易的验证方法、装置、设备及介质

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112287029A (zh) * 2020-11-17 2021-01-29 北京物资学院 一种区块链多链跨链系统及其实现机制
CN112488679A (zh) * 2020-12-03 2021-03-12 陈鹏 一种区块链的跨链合约解析方法、中继链及跨链系统
CN112861190A (zh) * 2021-04-23 2021-05-28 腾讯科技(深圳)有限公司 数据跨链协同方法、系统及装置
CN113572825A (zh) * 2021-07-09 2021-10-29 中国科学院计算技术研究所 面向中继链跨链架构的接入控制与资源访问控制方法及系统
CN113890739A (zh) * 2021-08-17 2022-01-04 北京邮电大学 跨区块链的认证方法、装置、电子设备及介质
CN114338666A (zh) * 2021-12-03 2022-04-12 杭州趣链科技有限公司 对Fabric区块链跨链交易的验证方法、装置、设备及介质

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
ZHIJUN XU: "scheme for intelligent blockchain-based manufacturing industry supply chain management", SPRINGER LINK, 3 January 2021 (2021-01-03) *
董贵山;张兆雷;李洪伟;白健;郝尧;陈宇翔;: "基于区块链的异构身份联盟与监管体系架构和关键机制", 通信技术, no. 02, 10 February 2020 (2020-02-10) *

Also Published As

Publication number Publication date
CN115065687B (zh) 2024-05-07

Similar Documents

Publication Publication Date Title
CN112287029B (zh) 一种区块链多链跨链系统及其实现机制
US11336465B2 (en) Sending cross-chain authenticatable messages
WO2020258848A1 (zh) 一种跨链发送资源的方法和装置
CN110650189A (zh) 一种基于中继的区块链的交互系统及方法
CN112907262B (zh) 农产品溯源下的一种基于中继链的区块链跨链交互方法
CN107733855A (zh) 一种可同时支持公有链、联盟链及私有链的区块链系统及应用方法
CN101714996B (zh) 基于对等计算网络的认证系统及方法
CN107231299A (zh) 一种链路由及实现区块链跨链通信的系统
CN114255031A (zh) 用于执行交易的跨区块链的系统、跨链交易方法及设备
CN113746858B (zh) 一种基于可验证随机函数的跨链通信方法
CN112583917A (zh) 一种基于cscp的混合链构建方法
CN101159780B (zh) 一种电信综合业务接入网关网间路由系统及其方法
CN113850599B (zh) 一种应用于联盟链的跨链交易方法及系统
CN111652617B (zh) 跨区块链平台的业务处理系统
CN104991817A (zh) 一种信息系统可配置集成方法及系统
CN112463761A (zh) 用于动态非平衡应用环境的跨链协同平台构建方法及系统
CN115065687A (zh) Hyperledger Fabric与以太坊间的跨链数据共享方法及系统
CN110417742B (zh) 跨链发送、中转、接收可认证消息的方法、装置及存储介质
Zhu et al. A study on the challenges and solutions of blockchain interoperability
US11706297B2 (en) Integration of a machine into an existing distributed ledger network
CN115708119A (zh) 跨链交易系统、方法、设备及存储介质
CN115080994A (zh) 一种基于时间锁定和中台的区块链跨链网关数据交互方法
CN112333131B (zh) 一种服务提供方法、区块链网络服务系统及存储介质
CN115208817B (zh) 一种基于跨链网关和Floyd算法的可信跨链路由方法
NL2026378B1 (en) Blockchain network system

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