CN112308713A - 一种跨链交易方法和装置 - Google Patents
一种跨链交易方法和装置 Download PDFInfo
- Publication number
- CN112308713A CN112308713A CN201911129391.6A CN201911129391A CN112308713A CN 112308713 A CN112308713 A CN 112308713A CN 201911129391 A CN201911129391 A CN 201911129391A CN 112308713 A CN112308713 A CN 112308713A
- Authority
- CN
- China
- Prior art keywords
- transaction
- node
- state
- hash
- blockchain
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q40/00—Finance; Insurance; Tax strategies; Processing of corporate or income taxes
- G06Q40/04—Trading; Exchange, e.g. stocks, commodities, derivatives or currency exchange
Landscapes
- Business, Economics & Management (AREA)
- Accounting & Taxation (AREA)
- Finance (AREA)
- Engineering & Computer Science (AREA)
- Development Economics (AREA)
- Economics (AREA)
- Marketing (AREA)
- Strategic Management (AREA)
- Technology Law (AREA)
- Physics & Mathematics (AREA)
- General Business, Economics & Management (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)
Abstract
本申请实施例提供了一种跨链交易方法和装置,其中,跨链交易方法包括:第一节点确定第一交易的交易状态为第一状态,所述第一状态表示交易通过共识校验;所述第一节点获取所述第二交易的交易状态;当所述第二交易的交易状态为所述第一状态时,所述第一节点根据所述第一交易的交易数据修改目标数据,所述目标数据为所述第一节点的状态机中与所述第一交易相关的数据。本申请中,跨链子交易的执行与否不只是取决于第一交易的共识校验结果,还需要考虑其他相关联的跨链交易的共识校验结果,因此不会出现相互关联的跨链交易只有一部分成功执行,而另一部分未成功执行的情况,实现了跨链交易在多个区块链上进行原子性执行。
Description
本申请要求于2019年7月26日提交中国专利局、申请号为201910683735.1、发明名称为“一种跨链交易方法和装置”的中国专利申请的优先权,其全部内容通过引用结合在本申请中。
技术领域
本申请涉及互联网技术领域,尤其涉及一种跨链交易方法和装置。
背景技术
区块链(Blockchain)***中,数据均保存在区块中,新写入的数据组成新的区块,添加在当前区块链的末端。每个区块在保存数据的同时,还要保存前一个区块中所有记录的数据唯一对应的一个数(往往是所有记录的数据的哈希值),从而形成链。因此,区块链***可以认为是由分布式网络上的互相不完全信任的计算机,通过共识规则,共同维护一套可追溯、不可篡改的链式数据的***。
在一种场景中,区块链间的跨链交易可以指用户A使用其在区块链1中的资产,向在区块链2中的用户B支付若干区块链2中的资产。此时,跨链交易可以包括相互关联的两个跨链交易(第一交易和第二交易),其中,第一交易指用户A扣除若干资产,第二交易指用户B增加若干资产。
现有技术中的实现方案为:确定一个中间链来扮演中间人的角色,用户A在区块链1中发起交易,当中间链确定第一交易在区块链1上执行成功后,向区块链2发起交易,使区块链2上执行第二交易,如果因为某些原因而导致第二交易失败,则需要撤销已经成功的交易(第一交易),然而已经成功的交易可能会无法撤销,进而出现相互关联的跨链交易只有一部分成功执行,而另一部分未成功执行。
综上,目前亟需一种跨链交易方法,用于解决相互关联的跨链交易在多个区块链上进行原子性执行的问题。
发明内容
本申请实施例提供了一种跨链交易方法,可以使得跨链交易实现在多个区块链上进行原子性执行
第一方面,本申请提供了一种跨链交易方法,应用于第一节点,所述第一节点维护第一区块链,第一交易属于所述第一区块链,所述第一交易与第二交易为相关联的跨链交易,所述第二交易属于第二区块链,第二节点维护所述第二区块链,所述方法包括:所述第一节点确定第一交易的交易状态为第一状态,所述第一状态表示交易通过共识校验;所述第一节点获取所述第二交易的交易状态;当所述第二交易的交易状态为所述第一状态时,所述第一节点根据所述第一交易的交易数据修改目标数据,所述目标数据为所述第一节点的状态机中与所述第一交易相关的数据。本实施例中,交易属于区块链,则维护该区块链的节点参与该区块链的建设,例如可以执行至少以下一种行为:交易的生成、交易数据的共识、交易相关的智能合约的执行、交易相关的区块生成、以及交易相关的状态机中的目标数据的修改,节点可以从维护的区块链中获取交易数据,其中,交易数据可以指示交易的具体内容或者描述交易的细节,例如,仅指示交易状态,如交易是否成功的数据,在本申请中,不应理解为交易数据。第一交易和第二交易可以是相关联的。例如,第一交易和第二交易为同一笔交易的不同子交易。具体的,第一交易和第二交易的交易数据中,具有表示两者相关联的标识,例如可以具有相同或相关联的的标识ID。本实施例中,第一节点可以主动基于第二交易的交易状态,去发起所述第一节点的状态机中目标数据的修改,目标数据可以是第一节点的状态机中与第一交易的交易状态相关的字段,例如,目标数据可能包括一种或几种前文描述的交易数据。在金融转账的场景中,目标数据可以是账户余额,例如:A向B转账X个单位的货币,第一交易为A的账户余额减少X个单位的货币,第二交易为B的账户余额增加X个单位的货币,则目标数据为A的账户余额;在开***的场景中,目标数据可以是***金额,例如:A向B开金额为X个单位的***,第一交易为A向B开金额为X个单位的***,第二交易为B接收到A开的金额为X个单位的***,则目标数据为A向B开***的金额;在货币兑换货物的场景中,目标数据可以是账户余额或者是货物的数量,例如:A向B转账X个单位的货币,B向A转账Y个单位的货物,则第一交易为A的账户余额减少X个单位的货币,第二交易为B减少Y个单位的货物,则目标数据为A的账户余额。
在第一方面的一种可能设计中,所述第一节点获取所述第二交易的交易状态,包括:所述第一节点获取包括所述第二交易的交易状态的第一区块,所述第一区块来自第三节点,所述第三节点不维护所述第一区块链和所述第二区块链。本实施例中,所述第三节点不维护所述第一区块链和所述第二区块链可以理解为所述第三节点不能从所述第一区块链和所述第二区块链中获取数据;应当说明的是,所述第三节点不维护所述第一区块链和所述第二区块链可以理解为所述第三节点不能从所述第一区块链和所述第二区块链中获取第一交易和第二交易的交易数据。从另一个角度讲,第三节点不为第一交易的计算以及第二交易的计算提供硬件资源。应当说明的是,所述第三节点不维护所述第一区块链和所述第二区块链可以理解为第三节点不执行如下行为:第一交易的生成、第二交易的生成、第一交易和第二交易的交易数据的共识、第一交易和第二交易相关的智能合约的执行、以及第一交易和第二交易相关的状态机中的目标数据的修改。
在第一方面的一种可能设计中,所述方法还包括:
所述第一节点向第三节点发送所述第一交易的交易状态,所述第三节点不维护所述第一区块链和所述第二区块链。
在第一方面的一种可能设计中,所述第一节点向第三节点发送所述第一交易的交易状态,包括:
所述第一节点向第三节点发送第三交易,所述第三交易包括所述第一交易的交易状态。
在第一方面的一种可能设计中,所述方法还包括:
所述第一节点向第三节点发送第五交易,所述第五交易包括超时信息,所述超时信息用于指示所述第三节点未从所述第二节点接收到所述第二交易的交易状态;
当所述第一节点未获取到所述第二交易的交易状态,且得到获取到第三区块链上包括所述超时信息的第二区块时,所述第一节点不根据所述第一交易的交易数据修改所述第一节点的状态机中与所述第一交易相关的目标数据。本实施例中,所述第一节点可以不根据述第一交易的交易数据修改所述第一节点的状态机中与所述第一交易相关的目标数据,可以根据其他信息的修改所述第一节点的状态机中与所述第一交易相关的目标数据,也可以不修改所述第一节点的状态机中与所述第一交易相关的目标数据。
在第一方面的一种可能设计中,所述方法还包括:
所述第一节点计算得到所述第二交易的第一哈希,或接收到第一客户端发送的所述第二交易的第一哈希,其中所述第一客户端为所述第一交易的发起端;
所述第一节点接收第三节点发送第二交易的第二哈希;
其中,所述第二交易的第一哈希与所述第二交易的第二哈希相等,表示所述第二交易的交易数据正确;所述第二交易的第一哈希与所述第二交易的第二哈希不相等,表示所述第二交易的交易数据不正确。
在第一方面的一种可能设计中,所述方法还包括:
所述第一节点计算得到所述第一交易的第一哈希,或接收到第一客户端发送的所述第一交易的第一哈希;
所述第一节点向所述第三节点发送所述第一交易的第一哈希。
在第一方面的一种可能设计中,所述第一节点根据所述第一交易的交易数据修改所述第一节点的状态机中与所述第一交易相关的目标数据之后,所述方法还包括:
所述第一节点向第四节点广播同步信息,所述同步信息用于表示所述第一节点已根据所述第一交易的交易数据修改所述第一节点的状态机中与所述第一交易相关的目标数据,所述第一节点和所述第四节点属于同一个节点集群。
第二方面,本申请提供了一种跨链交易方法,所述方法包括:
第三节点接收第二节点发送的第二交易的交易状态,所述第二节点维护第二区块链,所述第二交易属于所述第二区块链;
所述第三节点向所述第一节点发送所述第二交易的交易状态,以便所述第一节点基于所述第二交易的交易状态和第一交易的交易状态处理目标数据,其中所述目标数据为所述第一节点的状态机中与所述第一交易相关的数据,所述第二交易与所述第一交易为相关联的跨链交易,所述第一交易属于第一区块链,第一节点维护所述第一区块链,所述第三节点不维护所述第一区块链和所述第二区块链。
在第二方面的一种可能设计中,所述方法还包括:
所述第三节点生成包括所述第二交易的交易状态的第一区块。
在第二方面的一种可能设计中,所述方法还包括:
所述第三节点接收至少一个第五节点发送的交易;
所述第三节点生成包括所述第二交易的交易状态的第一区块,包括:
所述第三节点基于接收所述至少一个第五节点发送的交易的时间以及接收所述第二交易的交易状态的时间,对所述至少一个第五节点发送的交易和所述第二交易的交易状态进行排序,生成至少一个区块,其中第一区块为所述至少一个区块中的一个区块,所述第一区块包括所述第二交易的交易状态。
在第二方面的一种可能设计中,所述第三节点向所述第一节点发送第二交易的交易状态,包括:
所述第三节点向所述第一节点发送所述第一区块。
在第二方面的一种可能设计中,所述第三节点接收第二节点发送的第二交易的交易状态,包括:
所述第三节点接收所述第二节点发送的第四交易,所述第四交易包括所述第二交易的交易状态。
在第二方面的一种可能设计中,所述方法还包括:
所述第三节点接收所述第二节点发送的第二交易的第二哈希;
所述第三节点向所述第一节点发送所述第二交易的第二哈希,以便所述第一节点基于所述第二交易的第二哈希与第二交易的第一哈希确定所述第二交易的交易数据的正确性,其中,所述第二交易的第一哈希为所述第一节点计算得到,或来自于第一客户端,所述第一客户端为所述第一交易的发起端。
第三方面,本申请提供了一种跨链交易方法,应用于跨链交易***,所述跨链交易***包括第一节点、第二节点和第三节点,所述第一节点维护第一区块链,第一交易属于所述第一区块链,所述第一交易与第二交易为相关联的跨链交易,所述第二交易属于第二区块链,第二节点维护所述第二区块链,所述第三节点不维护所述第一区块链和所述第二区块链,所述方法包括:
所述第一节点确定第一交易的交易状态为第一状态,所述第一状态表示交易通过共识校验;
所述第二节点向所述第三节点发送所述第二交易的交易状态;
所述第三节点向所述第一节点发送所述第二交易的交易状态;
当所述第二交易的交易状态为所述第一状态时,所述第一节点根据所述第一交易的交易数据修改目标数据,所述目标数据为所述第一节点的状态机中与所述第一交易相关的数据。
在第三方面的一种可能设计中,所述方法还包括:
所述第三节点生成包括所述第二交易的交易状态的第一区块。
在第三方面的一种可能设计中,所述方法还包括:
所述第三节点接收至少一个第四节点发送的交易;
所述第三节点生成包括所述第二交易的交易状态的第一区块,包括:
所述第三节点基于接收所述至少一个第五节点发送的交易的时间以及接收所述第二交易的交易状态的时间,对所述至少一个第五节点发送的交易和所述第二交易的交易状态进行排序,生成至少一个区块,其中第一区块为所述至少一个区块中的一个区块,所述第一区块包括所述第二交易的交易状态。
在第三方面的一种可能设计中,所述第三节点向所述第一节点发送第二交易的交易状态,包括:
所述第三节点向所述第一节点发送所述第一区块。
在第三方面的一种可能设计中,所述第二节点向所述第三节点发送所述第二交易的交易状态,包括:
所述第二节点向所述第三节点发送第四交易,所述第四交易包括所述第二交易的交易状态。
在第三方面的一种可能设计中,所述第一节点向第三节点发送所述第一交易的交易状态,包括:
所述第一节点向第三节点发送第三交易,所述第三交易包括所述第一交易的交易状态。
在第三方面的一种可能设计中,所述方法还包括:
所述第一节点计算得到所述第二交易的第一哈希,或接收到第一客户端发送的所述第二交易的第一哈希,其中所述第一客户端为所述第一交易的发起端;
所述第三节点接收所述第二节点发送的第二交易的第二哈希;
所述第一节点接收所述第三节点发送的所述第二交易的第二哈希;
其中,所述第二交易的第一哈希与所述第二交易的第二哈希相等,表示所述第二交易的交易数据正确;所述第二交易的第一哈希与所述第二交易的第二哈希不相等,表示所述第二交易的交易数据不正确。
在第三方面的一种可能设计中,所述跨链交易***还包括第四节点,所述第一节点和所述第四节点属于同一个节点集群,所述第一节点根据所述第一交易的交易数据修改所述第一节点的状态机中与所述第一交易相关的目标数据之后,所述方法还包括:
所述第一节点向第四节点广播同步信息,所述同步信息用于表示所述第一节点已根据所述第一交易的交易数据修改所述第一节点的状态机中与所述第一交易相关的目标数据。
第四方面,本申请提供了一种第一节点,所述第一节点维护第一区块链,第一交易属于所述第一区块链,所述第一交易与第二交易为相关联的跨链交易,所述第二交易属于第二区块链,第二节点维护所述第二区块链,所述第一节点包括:
处理模块,用于确定第一交易的交易状态为第一状态,所述第一状态表示交易通过共识校验;
获取模块,用于获取所述第二交易的交易状态;
所述处理模块,还用于当所述第二交易的交易状态为所述第一状态时,所述第一节点根据所述第一交易的交易数据修改目标数据,所述目标数据为所述第一节点的状态机中与所述第一交易相关的数据。
在第四方面的一种可能设计中,所述获取模块,具体用于:
接收第三节点发送的所述第二交易的交易状态,所述第三节点不维护所述第一区块链和所述第二区块链。
在第四方面的一种可能设计中,所述第一节点还包括:
发送模块,用于点向第三节点发送所述第一交易的交易状态,所述第三节点不维护所述第一区块链和所述第二区块链。
在第四方面的一种可能设计中,所述发送模块,具体用于:
所述第一节点向第三节点发送第三交易,所述第三交易包括所述第一交易的交易状态。
在第四方面的一种可能设计中,所述处理模块,还用于:
计算得到所述第二交易的第一哈希,或所述接收模块,具体用于接收到第一客户端发送的所述第二交易的第一哈希,其中所述第一客户端为所述第一交易的发起端;
所述接收模块,具体用于接收第三节点发送第二交易的第二哈希;
其中,所述第二交易的第一哈希与所述第二交易的第二哈希相等,表示所述第二交易的交易数据正确;所述第二交易的第一哈希与所述第二交易的第二哈希不相等,表示所述第二交易的交易数据不正确。
在第四方面的一种可能设计中,所述处理模块,还用于:
计算得到所述第一交易的第一哈希,或所述接收模块,具体用于接收到第一客户端发送的所述第一交易的第一哈希;
所述发送模块,还用于向所述第三节点发送所述第一交易的第一哈希。
在第四方面的一种可能设计中,所述发送模块,还用于:
向第四节点广播同步信息,所述同步信息用于表示所述第一节点已根据所述第一交易的交易数据修改所述第一节点的状态机中与所述第一交易相关的目标数据,所述第一节点和所述第四节点属于同一个节点集群。
第五方面,本申请提供了一种第三节点,所述第三节点包括:
接收模块,用于接收第二节点发送的第二交易的交易状态,所述第二节点维护第二区块链,所述第二交易属于所述第二区块链;
发送模块,用于向所述第一节点发送所述第二交易的交易状态,以便所述第一节点基于所述第二交易的交易状态和第一交易的交易状态处理目标数据,其中所述目标数据为所述第一节点的状态机中与所述第一交易相关的数据,所述第二交易与所述第一交易为相关联的跨链交易,所述第一交易属于第一区块链,第一节点维护所述第一区块链,所述第三节点不维护所述第一区块链和所述第二区块链。
在第五方面的一种可能设计中,所述第三节点还包括:
处理模块,用于生成包括所述第二交易的交易状态的第一区块。
在第五方面的一种可能设计中,所述接收模块,还用于:
接收至少一个第五节点发送的交易;
所述处理模块,具体用于:
基于接收到所述至少一个第五节点发送的交易以及所述第二交易的交易状态的时间,对所述至少一个第五节点发送的交易和所述第二交易的交易状态进行排序,生成至少一个区块,其中第一区块为所述至少一个区块中的一个区块,所述第一区块包括所述第二交易的交易状态。
在第五方面的一种可能设计中,所述发送模块,具体用于:
向所述第一节点发送所述第一区块。
在第五方面的一种可能设计中,所述接收模块,具体用于:
接收所述第二节点发送的第四交易,所述第四交易包括所述第二交易的交易状态。
在第五方面的一种可能设计中,所述接收模块,还用于:
接收所述第二节点发送的第二交易的第二哈希;
所述发送模块,还用于:
向所述第一节点发送所述第二交易的第二哈希,以便所述第一节点基于所述第二交易的第二哈希与第二交易的第一哈希确定所述第二交易的交易数据的正确性,其中,所述第二交易的第一哈希为所述第一节点计算得到,或来自于第一客户端,所述第一客户端为所述第一交易的发起端。
第六方面,本申请实施例提供了一种跨链交易装置,包括:存储器、收发器、处理器以及总线***;其中,该存储器用于存储程序和指令;该收发器用于在该处理器的控制下接收或发送信息;该处理器用于执行该存储器中的程序;该总线***用于连接该存储器、该收发器以及该处理器,以使该存储器、该收发器以及该处理器进行通信;该处理器用于调用该存储器中的程序指令,执行如上述第一方面、第二方面所述的方法。
第七方面,本申请实施例提供了一种计算机可读存储介质,该计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述第一方面、第二方面所述的方法。
本申请提供了一种跨链交易方法,应用于第一节点,所述第一节点维护第一区块链,第一交易属于所述第一区块链,所述第二交易属于第二区块链,第二节点维护所述第二区块链,所述方法包括:所述第一节点确定第一交易的交易状态为第一状态,所述第一状态表示交易通过共识校验;所述第一节点获取所述第二交易的交易状态;当所述第二交易的交易状态为所述第一状态时,所述第一节点根据所述第一交易的交易数据修改目标数据,所述目标数据为所述第一节点的状态机中与所述第一交易相关的数据。通过上述方式,第一节点在确定第一交易的交易状态为第一状态之后,并不直接根据第一状态确定是否修改第一节点的状态机,而是接收第二交易的交易状态,并当所述第二交易的交易状态为所述第一状态时,修改第一节点的状态机,使得跨链子交易的执行与否不只是取决于第一交易的共识校验结果,还需要考虑其他相关联的跨链交易的共识校验结果,不会出现相互关联的跨链交易只有一部分成功执行,而另一部分未成功执行的情况,实现了跨链交易在多个区块链上进行原子性执行。
附图说明
图1为一种跨链交易方法的实施例示意图;
图2为本申请提供的一种区块链网络的架构示意图;
图3为本申请实施例提供的一种跨链交易方法的示意图;
图4a为一种跨链交易方法的应用例示意图;
图4b为一种跨链交易方法的应用例示意图;
图5为本申请实施例的一种区块链网络的架构示意图;
图6为本申请实施例提供的一种跨链交易方法的示意图;
图7a为一种跨链交易的依赖关系示意图;
图7b为本申请实施例提供的一种跨链交易方法的示意图;
图8为本申请实施例中跨链交易装置的实施例示意图;
图9为本申请实施例中跨链交易装置的实施例示意图;
图10为本申请实施例中跨链交易装置的一种结构示意图;
图11为本申请实施例中提供的一种服务器结构示意图。
具体实施方式
本申请实施例提供了一种跨链交易方法和装置,可以使得跨链交易实现在多个区块链上进行原子性执行。
本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例例如能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包括,例如,包括了一系列步骤或单元的过程、方法、***、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
“区块链”,具体可指一个各节点通过共识机制达成的、具有分布式数据存储结构的P2P网络***,该区块链内的数据分布在时间上相连的一个个“区块(block)”之内,后一区块包含前一区块的数据摘要,且根据具体的共识机制(如POW、POS、DPOS或PBFT等)的不同,达成全部或部分节点的数据全备份。区块链根据其网络节点的分布形式,可包括公有链、联盟链、私有链等。在实际的应用中,尤其是对联盟链的实际应用中,通常为不同的场景设置单独的区块链,例如用于处理房屋租赁业务场景的区块链、用于处理音乐作品版权使用业务场景的区块链等;而且对于在一个较大的应用场景中设置的区块链,还会为其开发相关的业务细化子链,例如用于处理房屋租赁业务场景的区块链主链,可以下挂多条房屋租赁下多种细分业务的区块链子链,如专门用于收录房屋租赁订单的区块链子链,专门用于收录可供租赁的房屋详情的区块链子链等,上述子链即为遵循上述区块链主链协议的多个实例。为实现可价值互连、信息互连的多区块链网络生态,跨区块链的数据访问或操作成为解决该问题的关键之道。
参照图1,图1为一种跨链交易方法的实施例示意图,如图1中示出的那样,跨链交易方法,包括:
101、第一区块链执行第一交易,并生成区块。
102、将生成的区块发送到第二区块链。
103、第二区块链验证区块,并确定第一交易在第一区块链上是否执行成功。
104、若第一交易在第一区块链上执行成功,则第二区块链触发第三区块链执行第二交易。
105、第三区块链执行第二交易。
然而,如果因为某些原因而导致第三区块链执行第二交易失败,则需要撤销已经成功的交易(第一交易),若第一交易可能会无法撤销,则会出现相互关联的跨链交易(第一交易和第二交易)只有一部分(第一交易)成功执行,而另一部分(第二交易)未成功执行的情况。
需要说明的是,上述执行成功指的是根据交易数据更新了相应的状态机,换一种表述方式,上述执行成功指的是根据交易数据更新了相应的状态数据库。
为了解决上述问题,本申请实施例提供了一种跨链交易方法,第一节点在确定第一交易的交易状态为第一状态之后,并不直接根据第一状态确定是否修改第一节点的状态机,而是接收第二交易的交易状态,并当所述第二交易的交易状态为所述第一状态时,修改第一节点的状态机,使得跨链子交易的执行与否不只是取决于第一交易的共识校验结果,还需要考虑其他相关联的跨链交易的共识校验结果,不会出现相互关联的跨链交易只有一部分成功执行,而另一部分未成功执行的情况,实现了跨链交易在多个区块链上进行原子性执行。
参照图2,图2为本申请提供的一种区块链网络的架构示意图。
如图1所示,本申请提供的区块链网络包括:区块链1网络、区块链2网络、区块链3网络30、第一客户端130和第二客户端230。
其中,区块链1网络中包括节点集群110和节点集群120,其中,节点集群110包括多个节点peer,节点集群120包括多个节点peer,这些节点peer共同维护区块链1。
区块链2网络中包括节点集群210和节点集群220,其中,节点集群210包括多个节点peer,节点集群220包括多个节点peer,这些节点peer共同维护区块链2。
区块链3网络30中包括节点集群310、节点集群110和节点集群210,其中,节点集群310包括多个节点peer,节点集群110包括多个节点peer,节点集群210包括多个节点peer,这些节点peer共同维护区块链3。
其中,节点集群110既可以维护区块链1,也可以维护区块链3,节点集群210既可以维护区块链2,也可以维护区块链3,相当于节点集群110即可以获取区块链1包含的数据,也可以获取区块链3包含的数据,节点集群210即可以获取区块链2包含的数据,也可以获取区块链3包含的数据。
示例性的,用户可以在第一客户端130发起交易,第一客户端130可以生成相应的交易信息,并通过网络发送到集群110,集群110包括多个第一节点,第一节点可以作为背书节点,对交易信息进行背书,并通过网络向第一客户端130发送背书响应。
第一客户端130可以对背书响应进行验证,并向节点集群120发送交易信息和背书响应,其中,集群120可以为排序集群,包括多个排序节点,排序节点可以对接收到的交易数据进行全局排序,将一批排序后的交易数据组合生成区块,并将区块传输到集群110。第一节点可以通过对区块进行验证进而确定交易的有效性,并将交易的有效性发送到集群310。
类似的,用户可以在第二客户端230发起交易,第二客户端230可以生成相应的交易信息,并通过网络发送到集群210,集群210包括多个第二节点,第二节点可以作为背书节点,对交易信息进行背书,并通过网络向第二客户端230发送背书响应。
第二客户端230可以对背书响应进行验证,并向节点集群220发送交易信息和背书响应,其中,集群220可以为排序集群,包括多个排序节点,排序节点可以对接收到的交易数据进行全局排序,将一批排序后的交易数据组合生成区块,并将区块传输到集群210。第一节点可以通过对区块进行验证进而确定交易的有效性,并将交易的有效性发送到集群310。
集群310可以为排序集群,包括多个第三节点,第三节点可以是排序节点,排序节点可以对接收到的交易数据进行全局排序,将一批排序后的交易数据组合生成区块,并将区块传输到集群110和集群210。
集群110可以将交易结果通过网络发送到第一客户端130,集群210可以将交易结果通过网络发送到第二客户端230。
需要说明的是,区块链是以区块为单位存储交易清单,区块链中的区块按照时间顺序生成,每个区块用于记录一段时间内产生的交易清单。区块链上所记录的所有交易清单即为账本(ledger),例如,区块链1上记录的账本为ledger1,区块链2上记录的账本为ledger2,区块链3上记录的账本为ledger3,本申请中,在不引起歧义的情况下,账本和区块链是可以互相替代的同等概念。
需要说明的是,上述***架构仅为一种逻辑上的示意;在物理上,区块链网络中的一个节点在一台物理机(服务器)上,或者,多个区块链网络中的多个节点在同一个服务器上,一个节点具体可以是指服务器中运行的一个进程或者一系列进程,例如,区块链1网络中的节点和区块链2网络中的节点可以为一个服务器上运行的两个进程。
本申请中所描述的节点可以是指节点所在的服务器。
需要说明的是,图2中示出的区块链网络的架构示意图仅为一种示意,实际应用中还可以包括其他区块链网络,该区块链网络包括排序节点集群,以及可以维护区块链3的节点集群。
需要说明的是,本申请提供的跨链交易方法,可以应用于由多条区块链构成的多链***。其中,本说明书各实施例的多链***,可以包括多个遵循相同的区块链基础协议的同构区块链,也可包括遵循不同的区块链基础协议的异构区块链。上述多条区块链的架构不限于主链-侧链架构、主链-多子链架构或并行多链架构。
参照图3,图3为本申请实施例提供的一种跨链交易方法的示意图,如图3中示出的那样,跨链交易方法,包括:
301、所述第一节点确定第一交易的交易状态为第一状态,所述第一状态表示交易通过共识校验。
本申请实施例中,第一交易和第二交易为相互关联的跨链交易,其中,第一交易为属于第一区块链上的交易,第二交易为属于第二区块链上的交易。
本申请实施例中,第一交易为属于第一区块链上的交易可以理解为,第一交易的交易操作可以导致第一区块链的账本状态改变。类似的,第二交易为属于第二区块链上的交易可以理解为,第二交易的交易操作可以导致第二区块链的账本状态改变。
接下来以第一区块链和第二区块链为联盟链fabric链为例进行说明。
示例性的,当用户在第一客户端发起跨链交易,该跨链交易包括相互关联的两个跨链子交易(第一交易和第二交易)。具体的,用户可以通过第一客户端实施交易操作。第一客户端可以根据用户的交易操作生成第一交易对应的交易数据。该交易操作可以是导致第一区块链和第二区块链的账本状态改变的操作。交易数据可以包括但不限于用户标识、交易参数(例如交易金额)、交易时间等。第一客户端可以基于第一交易对应的交易数据生成第一交易的交易信息,该交易信息可以包括交易标识、交易要调用的合约的合约标识、合约方法、交易数据以及客户端签名等。
需要说明的是,本申请实施例中,第一客户端还可以根据用户的交易操作生成第二交易对应的交易数据,并向第二客户端发送第二交易对应的交易数据,第二客户端可以基于第二交易对应的交易数据生成第二交易的交易信息,该交易信息可以包括交易标识、交易要调用的合约的合约标识、合约方法、交易数据以及客户端签名等。
上述交易标识可以是由客户端生成的。交易标识可以用于区分和确定交易对账本所执行的操作。上述交易标识可以是一个由数字和字母所构成的字符串。在一些应用场景中,对于每一个交易,可以使用哈希函数对该交易所对应的对账本所执行的操作、上述交易数据等进行处理,将所得到的哈希值作为该交易的交易标识。
具体的,第一客户端可以使用哈希函数对第一交易所对应的对账本所执行的操作、第一交易的交易数据等信息进行处理,将所得到的哈希值作为第一交易的交易标识。
需要说明的是,第二客户端可以执行与第一客户端相同或相似的动作,重复之处不再赘述。
上述客户端签名可以是第一客户端使用自身的私钥生成的签名。上述第一客户端的私钥可以是使用哈希算法生成的哈希值,也可以是使用随机数函数生成的随机数等。
上述合约标识是指区块链中的各节点共同遵守的智能合约的标识。上述智能合约可以是运行于区块链网络上的应用程序。在一些应用场景中,上述智能合约又称为链码。链码包括***链码和用户链码,***链码用来实现***层面的功能,包括***的配置,用户链码的部署、升级,用户交易的签名和验证策略等。用户链码实现用户的应用功能。链码可以被编译成一个独立的应用程序。
在区块链网络中,客户端发起的交易信息所指示的交易数据需要由一个或多个背书节点进行验证。
本申请实施例中,第一客户端在生成第一交易的交易信息之后,可以将该交易信息发送到第一节点集群中的背书节点。
其中,每一个背书节点上可以预先安装智能合约。对于第一交易的交易信息,背书节点可以调用智能合约对第一交易进行验证。
可选的,在一种实施例中,上述背书节点可以是由第一客户端预先设定的。在一些应用场景中,第一客户端在向背书节点发送第一交易的交易信息之前,可以调用智能合约中的背书策略以从第一节点集群包含的节点中确定出为上述第一交易的交易信息进行背书的至少一个背书节点。也就是说,在这些应用场景中,上述背书节点可以由第一客户端基于预设背书策略,从第一节点集群包含的节点中选取。
上述背书节点收到第一客户端发送的上述第一交易的交易信息后,会调用智能合约中的相关代码模拟执行交易信息所指示的第一交易。例如背书节点将第一交易的交易信息中的交易数据作为输入,在自身对应的账本上模拟执行第一交易,生成包含执行返回值、读操作集合和写操作集合的交易结果。上述背书节点可以将上述读操作集合和写操作集合、背书结果(通过或者不通过)以及背书节点的背书签名进行打包,从而生成背书响应。此外,上述背书响应还可以包括上述交易信息对应的客户端的标识、以及交易标识。
上述背书节点的背书签名可以由背书节点根据其对应的私钥生成。上述背书节点的私钥可以是由哈希算法生成的哈希值,或者是由随机数生成函数生成的随机数。
本申请实施例中,背书节点可以将多个背书响应发送给客户端。
第一客户端可以接收各背书节点发送的背书响应,然后确定背书响应是否符合预设规则。
可选的,在一种实施例中,上述第一客户端可以将根据用户操作生成的交易信息包括的客户端标识、交易标识,与接收到的预设背书节点发送的背书响应中的客户端标识以及交易标识进行匹配,若匹配成功,则进一步确定背书响应是否符合预设规则。
可选的,在一种实施例中,第一客户端可以确定上述背书响应是否包括背书节点对上述第一交易的交易信息的背书结果为通过的信息,若确定背书响应包括预设背书节点对第一交易的交易信息的背书结果为通过的信息,则确定背书响应符合预设规则;或者确定接收到的、所指示的背书结果为通过的背书响应所对应的背书节点的数量是否大于等于预设阈值,若确定接收到的、所指示的背书结果为通过的背书响应所对应的背书节点的数量大于等于预设阈值,则确定背书响应符合预设规则;或者确定接收到的、所指示的背书结果为通过的背书响应所对应的背书节点中是否包括权重大于预设权重阈值的背书节点;若确定接收到的、所指示的背书结果为通过的背书响应所对应的背书节点中包括权重大于预设权重阈值的背书节点,则确定背书响应符合预设规则。
需要说明的是,上述确定背书节点的方法,以及背书节点对第一交易的交易信息进行验证的方法是目前广泛研究和应用的公知技术,在此不再赘述。
需要说明的是,背书节点的数量可以为多个,则相应的背书响应也可以为多个,每个背书响应中包括一个背书节点的背书签名,即第一客户端可以接收到多个背书签名。
本申请实施例中,第一客户端确定背书响应符合预设规则之后,可以将第一交易的交易信息以及多个背书响应中包括的多个背书签名发送到第二节点集群。
本申请实施例中,第二节点集群中包含的节点维护第一区块链,第二节点集群为排序集群(orderer group),其包括多个排序节点,每个排序节点都可以是部署在服务器上的抽象节点,每个排序节点都可用于提供区块链技术中的排序服务。
第二节点集群中包含的多个排序节点可以为接收到的交易数据进行全局排序,并将一批排序后的交易数据组合生成区块结构。
在本实施例中,上述区块结构可以包括但不限于如下数据:当前区块号对应的、根据哈希算法得到的哈希值,上一区块号对应的哈希值,时间戳,以及多条交易数据。
当第二节点集群中的一个或多个排序节点收到第一客户端传输的N个交易信息(至少包括第一交易的交易信息以及多个背书响应中包括的多个背书签名)后,可以由至少一个排序节点生成对应的M个区块并对M个区块进行排序,将M个区块传输至第一节点集群,使得第一节点集群对M个区块进行验证,并将验证通过的区块依次添加到对应的区块链中。
本申请实施例中,第一节点集群中的节点可以接收到第三区块,该第三区块包括第一交易的交易数据以及与第一交易对应的多个背书签名。需要说明的是,为了方便描述,以下将第一节点集群中的节点描述为第一节点。
第一节点接收到包括第一交易的交易数据以及与第一交易对应的多个背书签名的区块,可以对该第三区块进行共识校验。具体的,第一节点可以对多个背书签名进行校验、对交易信息中的交易结构进行校验,以及对区块进行多版本并发控(multi versionconcurrency control,mvcc)校验等。
若第一节点对该第三区块的共识校验通过,则可以确定第一交易的交易状态为第一状态,所述第一状态表示交易通过共识校验。
若第一节点对该第三区块的共识校验不通过,则可以确定的交易状态为第三状态,所述第三状态表示交易未通过共识校验。
可选的,第一节点可以将该第三区块添加到第一区块链中,并在该第三区块中标注第一交易的交易状态。
本申请实施例中,第一节点在确定第一交易的交易状态为第一状态之后,即使未确定第二交易的交易状态,也将所述第三区块加到对应的区块链中,使得不会阻塞后续交易的执行。
在现有技术中,若第一节点对该区块的共识校验通过,则会在区块中与第一交易的交易状态相关的字段中标注为有效valid,并执行第一交易,具体的,第一节点可以更新第一交易对应的状态数据库(例如,账户余额以及交易时间等)。此时,若后续第二交易的交易状态为无效invalid时,由于第一交易对应的状态数据库中与第一交易相关的数据已经更新生效,此时第一交易已经执行,而第二交易并没有执行。
本申请实施例中,第一节点在确定第一交易通过共识校验时,可以在第三区块中与第一交易的交易状态相关的字段中标注为有效待定pending,且不修改第一节点的状态机。
需要说明的是,可选的,若第一节点确定第一交易的交易状态为第三状态(例如:无效invalid),则可以在第三区块中与第一交易的交易状态相关的字段中标注为无效invalid。
可选的,在一种实施例中,第一节点可以向第三节点集群的第三节点发送第三交易,所述第三交易包括所述第一交易的交易状态。
可选的,在一种实施例中,第三交易可以包括交易状态指示信息,该交易状态指示信息可以指示第一交易的交易状态,例如,交易状态指示信息可以是一个字符串,当第一交易的交易状态为第一状态时,交易状态指示信息可以为pending或其他可以指示共识校验通过的字符串,当第一交易的交易状态为第三状态时,有效性指示信息可以为invalid或其他可以指示共识校验不通过的字符串。
本申请实施例中,第三节点集群中包含的节点维护第三区块链,第三节点集群为排序集群(orderer group),其包括多个排序节点,每个排序节点都可以是部署在服务器上的抽象节点,每个排序节点都可用于提供区块链技术中的排序服务。
本申请实施例中,第三节点集群还可以接收到第二节点发送的第二交易的交易状态,其中,第二交易的交易状态为第二节点确定,并向第三节点集群发送的。
在本实施例中,第三节点集群中包含的多个排序节点可以为接收到的交易进行全局排序,并将一批排序后的交易数据组合生成区块结构。
具体的,第三节点集群可以生成第一区块,第一区块包括第一交易的交易状态以及第二交易的交易状态。
需要说明的是,第一交易的交易状态和第二交易的交易状态可以在同一个区块上,也可以在不同的区块上,这里并不限定。
302、第一节点获取第二交易的交易状态。
本申请实施例中,第一节点可以获取第三区块链上的第一区块,所述第一区块包括所述第二交易的交易状态。
具体的,第二交易的交易状态可以为第一状态或第三状态,其中,第一状态表示交易通过共识校验,第三状态表示交易未通过共识校验。所述第一节点可以接收第三节点发送的包括所述第二交易的交易状态的第一区块。
303当所述第二交易的交易状态为所述第一状态时,所述第一节点根据所述第一交易的交易数据修改目标数据,所述目标数据为所述第一节点的状态机中与所述第一交易相关的数据。
本申请实施例中,第一节点获取第二交易的交易状态,进而可以确定第二交易的交易状态为第一状态还是第三状态,并当所述第二交易的交易状态为所述第一状态时,根据所述第一交易的交易数据修改所述第一节点的状态机。
例如,第一节点在确定第一交易的共识验证通过后,可以确定第一交易的交易状态为第一状态,示例性的,可以在第一交易的区块中标注其交易状态为待定pending,当第一节点确定第二交易的交易状态也为待定时,可以更新第一交易的区块中标注其交易状态为有效valid,并根据所述第一交易的交易数据修改所述第一节点的状态机。
本申请实施例中,第一节点获取第二交易的交易状态,进而可以确定第二交易的交易状态为第一状态还是第三状态,并当所述第二交易的交易状态为所述第三状态时,不根据所述第一交易的交易数据修改所述第一节点的状态机。
例如,第一节点在确定第一交易的共识验证通过后,可以确定第一交易的交易状态为第一状态,示例性的,可以在第一交易的区块中标注其交易状态为待定pending,当第一节点确定第二交易的交易状态为无效invalid时,可以更新第一交易的区块中标注其交易状态为无效invalid,同时,不根据所述第一交易的交易数据修改所述第一节点的状态机。
需要说明的是,上述实施例中,仅以跨链交易包括第一交易和第二交易为例进行了说明,在实际应用中,跨链交易也可以包括超过两个的交易,本申请并不限定,具体实施例方式可参照上述实施例,这里不再赘述。
需要说明的是,在一种应用场景中,普通交易和跨链交易可能会存在一定的依赖关系,具体的,普通交易和跨链交易的交易数据之间可能存在一定的依赖关系,需要指出的是,本实施例中的普通交易为可以独立执行的交易。
例如,有一个跨链交易:跨链交易A和普通交易A,跨链交易A包括第一交易和第二交易。
第一交易需要更新A账户的余额,而普通交易A也需要更新A账户的余额,第一交易在时序上在第三交易之前。
此时,普通交易A需要第一交易完成之后,才能执行。
而由于第一交易属于跨链交易,因此第一交易的执行与否取决于第一交易和第二交易的交易结果,交易时间可能会很长,因此会使得普通交易A的等待时间可能会很长。
本实施例中,若第一节点除了处理第一交易之外,还需要处理第三交易,其中,第三交易为普通交易,即可以独立完成的交易,而不是跨链子交易,第三交易的交易数据中包括目标交易参数,相应的,第一交易的交易数据中也包括目标交易参数,且第三交易对应的执行时序在第一交易的执行时序之后,换一种表述方式,若第一节点先接收到第一交易所在的区块,或者,若第一交易和第三交易所在的区块为同一个区块,在该区块上,第三交易在第一交易之后。
此时,如果第一节点确定第一交易的交易状态之后,才确定第三交易的交易状态,则第三交易的等待时间可能会很长。
本申请实施例中,第一节点可以直接确定第三交易的交易状态为第三状态。
可选的,所述第一节点根据所述第一交易的交易数据更新所述第一节点的状态机之后,所述方法还包括:
所述第一节点向第四节点广播同步信息,所述同步信息用于表示所述第一节点已更新所述第一节点的状态机,所述第一节点和所述第四节点属于同一个节点集群。
可选的,在一种实施例中,第一节点在确定第一交易的交易状态,并根据第一交易的交易状态执行或不执行第一交易(根据第一交易的交易数据修改第一节点的状态机或者不根据第一交易的交易数据修改第一节点的状态机)之后,可以将第一节点完成第一交易的同步信息发送到第二节点集群,第二节点集群可以生成包括同步信息的区块,并进行排序出块,相应的,第一节点集群中除了第一节点之外的节点(第四节点)可以接受到第二节点集群发送的包括同步信息的区块。类似的,第一节点集群中除了第一节点之外的节点(第四节点)也可以将第一节点完成第一交易的同步信息发送到第二节点集群,第二节点集群可以生成包括同步信息的区块,并进行排序出块。
如果第一节点确定第一交易的交易状态,并根据第一交易的交易状态执行或不执行第一交易,且接收到了第一节点集群中其他节点发送的第一交易的同步信息,则可以确定该第一交易在其他节点已经完成,进而可以认为第一交易对第三交易不产生影响,可以正常进行第三交易。
如果第一节点还未确定第一交易的交易状态,但接收到了第一节点集群中其他节点发送的第一交易的同步信息,则可以确定该第一交易在其他节点已经完成,进而可以认为第一交易对第三交易不产生影响,可以正常进行第三交易。
如果第一节点确定第一交易的交易状态,但未接收到第一节点集群中其他节点发送的第一交易的同步信息,则可以确定该第一交易在其他节点没有完成,进而可以认为第一交易可能会对第三交易产生影响,第一节点可以直接确定第三交易的交易状态为第三状态。
如果第一节点未确定第一交易的交易状态,且未接收到第一节点集群中其他节点发送的第一交易的同步信息,则可以确定该第一交易在其他节点没有完成,进而可以认为第一交易可能会对第三交易产生影响,第一节点可以直接确定第三交易的交易状态为第三状态。
本申请提供了一种跨链交易方法,包括:第一节点确定第一交易的交易状态为第一状态,所述第一状态表示交易通过共识校验;所述第一节点获取第二交易的交易状态;当所述第二交易的交易状态为所述第一状态时,所述第一节点根据所述第一交易的交易数据修改所述第一节点的状态机。通过上述方式,第一节点在确定第一交易的交易状态为第一状态之后,并不直接根据第一状态确定是否修改第一节点的状态机,而是接收第二交易的交易状态,并当所述第二交易的交易状态为所述第一状态时,修改第一节点的状态机,使得跨链子交易的执行与否不只是取决于第一交易的共识校验结果,还需要考虑其他相关联的跨链交易的共识校验结果,不会出现相互关联的跨链交易只有一部分成功执行,而另一部分未成功执行的情况,实现了跨链交易在多个区块链上进行原子性执行。
参照图4a,图4a为一种跨链交易方法的应用例示意图,具体的,跨链交易方法包括:
4011、第一节点确定第一交易的交易状态为第一状态;
4012、第二节点确定第二交易的交易状态为第一状态;
4021、第一节点发送所述第二交易的交易状态;
4021、第二节点发送所述第二交易的交易状态;
4031、第三节点生成包括第一交易的交易状态的区块;
4032、第三节点生成包括第二交易的交易状态的区块;
4041、第三节点发送第二交易的交易状态;
4042、第三节点发送所述第一交易的交易状态;
4051、第一节点当第二交易的交易状态为第一状态时,根据第一交易的交易数据修改目标数据;
4052、第二节点当第一交易的交易状态为第一状态时,根据第一交易的交易数据修改目标数据。
关于步骤4011至步骤4052的具体描述可参照上述实施例,这里不再赘述。
更具体的,参照图4b,图4b为一种跨链交易方法的应用例示意图,具体的,跨链交易方法包括:
501、第一客户端接收用户的交易操作。
本申请实施例中,该交易操作可以是导致第一区块链和第二区块链的账本状态改变的操作。
502、第一客户端生成交易数据。
本申请实施例中,第一客户端可以根据用户的交易操作生成第一交易对应的交易数据,其中,交易数据可以包括但不限于用户标识、交易参数(例如交易金额)、交易时间等。
503、第一客户端将交易数据发送到第二客户端。
本申请实施例中,第一客户端还可以根据用户的交易操作生成第二交易对应的交易数据,并向第二客户端发送第二交易对应的交易数据
5041、第一客户端生成交易信息。
本申请实施例中,第一客户端可以基于第一交易对应的交易数据生成第一交易的交易信息,该交易信息可以包括交易标识、交易要调用的合约的合约标识、合约方法、交易数据以及客户端签名等。
5042、第二客户端生成交易信息。
本申请实施例中,第二客户端可以基于第二交易对应的交易数据生成第二交易的交易信息,该交易信息可以包括交易标识、交易要调用的合约的合约标识、合约方法、交易数据以及客户端签名等。
5051、第一客户端向第一背书节点发送交易请求。
本申请实施例中,第一背书节点可以是第一节点集群中的一部分或全部节点。第一客户端在生成第一交易的交易信息之后,可以将该交易信息发送到第一节点集群中的背书节点。其中,每一个背书节点上可以预先安装智能合约。对于第一交易的交易信息,背书节点可以调用智能合约对第一交易进行验证。
5052、第二客户端向第二背书节点发送交易请求。
本申请实施例中,第二背书节点可以是第二节点集群中的一部分或全部节点。第二客户端在生成第二交易的交易信息之后,可以将该交易信息发送到第二节点集群中的背书节点。其中,每一个背书节点上可以预先安装智能合约。对于第二交易的交易信息,背书节点可以调用智能合约对第二交易进行验证。
5061、第一背书节点进行背书。
本申请实施例中,第一背书节点收到第一客户端发送的第一交易的交易信息后,会调用智能合约中的相关代码模拟执行交易信息所指示的第一交易。例如第一背书节点将第一交易的交易信息中的交易数据作为输入,在自身对应的账本上模拟执行第一交易,生成包含执行返回值、读操作集合和写操作集合的交易结果。第一背书节点可以将上述读操作集合和写操作集合、背书结果(通过或者不通过)以及背书节点的背书签名进行打包,从而生成背书响应。
5062、第二背书节点进行背书。
本申请实施例中,第二背书节点收到第二客户端发送的第二交易的交易信息后,会调用智能合约中的相关代码模拟执行交易信息所指示的第二交易。例如背书节点将第二交易的交易信息中的交易数据作为输入,在自身对应的账本上模拟执行第二交易,生成包含执行返回值、读操作集合和写操作集合的交易结果。第二背书节点可以将上述读操作集合和写操作集合、背书结果(通过或者不通过)以及背书节点的背书签名进行打包,从而生成背书响应。
5071、第一背书节点向第一客户端发送背书响应。
5072、第二背书节点向第一客户端发送背书响应。
5081、第一客户端验证通过。
本申请实施例中,第一客户端可以接收第一背书节点发送的背书响应,然后确定背书响应是否符合预设规则。
5082、第二客户端验证通过。
本申请实施例中,第二客户端可以接收第二背书节点发送的背书响应,然后确定背书响应是否符合预设规则。
5091、第一客户端将交易信息和签名发送到第一排序节点。
本申请实施例中,若第一客户端确定第一背书节点发送的背书响应符合预设规则,可以将第一交易的交易信息以及多个背书响应中包括的多个背书签名发送到第一排序节点。
5092、第二客户端将交易信息和签名发送到第二排序节点。
本申请实施例中,若第二客户端确定第二背书节点发送的背书响应符合预设规则,则可以将第一交易的交易信息以及多个背书响应中包括的多个背书签名发送到第二排序节点。
5101、第一排序节点生成区块。
5102、第二排序节点生成区块。
5111、第一排序节点将区块发送到第一节点。
本申请实施例中,当第一排序节点收到第一客户端传输的N个交易信息(至少包括第一交易的交易信息以及多个背书响应中包括的多个背书签名)后,可以由第一排序节点生成对应的M个区块并对M个区块进行排序,将M个区块传输至第一节点。
5112、第二排序节点将区块发送到第二节点。
本申请实施例中,当第二排序节点收到第二客户端传输的N个交易信息(至少包括第二交易的交易信息以及多个背书响应中包括的多个背书签名)后,可以由第二排序节点生成对应的M个区块并对M个区块进行排序,将M个区块传输至第二节点。
5121、第一节点验证区块,确定第一交易的交易状态。
本申请实施例中,第一节点接收到包括第一交易的交易信息以及与第一交易对应的多个背书签名的区块,可以对该区块进行验证。具体的,第一节点可以对多个背书签名进行验证、对交易信息中的交易结构进行验证,以及对区块进行多版本并发控(multiversion concurrency control,mvcc)验证等。
5122、第二节点验证区块,确定第二交易的交易状态。
本申请实施例中,第二节点接收到包括第二交易的交易信息以及与第二交易对应的多个背书签名的区块,可以对该区块进行验证。具体的,第二节点可以对多个背书签名进行验证、对交易信息中的交易结构进行验证,以及对区块进行多版本并发控(multiversion concurrency control,mvcc)验证等。
5131、第一节点将第一交易的交易状态发送到第三节点。
5132、第二节点将第二交易的交易状态发送到第三节点。
514、第三节点生成区块,并排序。
5151、第三节点将区块发送到第一节点。
5152、第三节点将区块发送到第二节点。
本申请实施例中,当第一排序节点收到第一客户端传输的N个交易信息(至少包括第一交易的交易信息以及多个第一交易的背书响应中包括的多个背书签名,以及第二交易的交易信息以及多个第二交易的背书响应中包括的多个背书签名)后,可以由第三节点集群生成对应的M个区块并对M个区块进行排序,将M个区块传输至第一节点和第二节点。
5161、第一节点根据第一交易的交易状态和第二交易的交易状态确定第一交易的交易状态。
5162、第二节点根据第一交易的交易状态和第二交易的交易状态确定第二交易的交易状态。
5171、第一节点根据第一交易的交易状态确定第一交易执行或不执行。
5172、第二节点根据第二交易的交易状态确定第二交易执行或不执行。
5181、第一节点将执行结果发送到第一客户端。
5182、第二节点将执行结果发送到第二客户端。
关于,第一节点如何根据第一交易的交易状态确定第一交易执行或不执行,以及第二节点如何根据第二交易的交易状态确定第一交易执行或不执行,可参照上述实施例的描述,这里不再赘述。
需要说明的是,以上为以第一区块链和第二区块链为联盟链fabric链为例进行的说明,当第一区块链和第二区块链为遵循不同的区块链基础协议的异构区块链时,例如,第一区块链可以是以太坊链,此时,第一节点在确定第一交易的交易状态为第一状态之后,可以在以太坊链上部署第一交易,并锁定第一交易,在接收到由第三节点集群发送的第二交易的交易状态之后,当所述第二交易的交易状态为所述第一状态时,确定所述第一交易的交易状态为第二状态,且当所述第一交易处于第二状态时,执行所述第一交易。
需要说明的是,本申请中的第一节点可以不属于以太坊链,而是新增的分布式节点集群的节点。
本申请实施例中,若所述第一交易的交易状态为第三状态,则不执行所述第一交易,具体的,第一节点可以指示以太坊链对第一交易执行回退,即指示以太坊链不执行第一交易。
本申请实施例中,若所述第一交易的交易状态为第二状态,则执行所述第一交易,具体的,第一节点可以指示以太坊链解锁第一交易,即指示以太坊链执行第一交易。
需要说明的是,若第一区块链为fabric链,第二区块链为以太坊链,则第一区块链执行上述实施例中关于fabric链的执行步骤,第二区块链执行上述实施例中关于以太坊链的执行步骤。
需要说明的是,在其他应用场景中,第一区块链或第二区块链还可以是比特币链,此处并不限定。
参照图5,图5为本申请实施例的一种区块链网络的架构示意图,如图5中示出的那样,区块链网络包括:区块链4网络40、区块链2网络、区块链3网络30、第一客户端130、第二客户端230和节点集群510,其中,区块链4网络40对应的区块链为以太坊链。
本申请实施例中,区块链2网络和第二客户端230的具体描述可参照图2对应的实施例的描述,这里不再赘述。
本申请实施例中,区块链4网络40中包括节点集群410,节点集群410包括多个节点peer,这些节点peer共同维护以太坊链。
节点集群510包括多个节点peer,和图1的架构示意不同的是,区块链3网络30不包括节点集群110,此时可以由节点集群510来完成节点集群110的功能,即节点集群510可以作为适配器提供节点集群110的功能。
示例性的,用户可以在第一客户端130发起交易,第一客户端130可以生成相应的交易信息,并通过网络发送到集群510,集群510包括多个第一节点,第一节点在确定交易的交易状态为第一状态之后,第一节点可以在节点集群410上部署交易,相应的,节点集群410可以锁定该交易。第一节点还可以将第一交易的交易状态发送到集群310。
类似的,第二节点可以将第二交易的交易状态发送到集群310。
集群310可以为排序集群,包括多个第三节点,第三节点可以是排序节点,排序节点可以对接收到的交易数据进行全局排序,将一批排序后的交易数据组合生成区块,并将区块传输到集群510和集群210。
集群510可以根据接收到的区块确定交易的交易状态,并当交易状态为第二状态时,指示节点集群410执行交易,当交易状态为第三状态时,指示节点集群410执行交易回退,即不执行交易。
在一些场景中,跨链交易包括多个相关联的跨链子交易,例如第一交易和第二交易,若第一交易为A用户向B用户转10个单位的货币,此时,第一交易为第一区块链上A账户的余额减10个单位的货币,第二交易为第二区块链上B账户的余额加10个单位的货币。
然而,由于客户端可能是不可信的,存在一定的欺诈风险,第一客户端和第二客户端发起的交易可能是不真实的,例如,第一客户端发起的交易为第一区块链上A账户的余额减10个单位的货币,而第二交易为第二区块链上B账户的余额加20个单位的货币,这会破坏既有的数据逻辑关系,是不可接受的。
为了解决上述技术问题,本申请提供了一种跨链交易方法。
参照图6,图6为本申请实施例提供的一种跨链交易方法的示意图,如图6中示出的那样,跨链交易方法包括:
601、所述第一节点计算得到所述第二交易的第一哈希,或接收到第一客户端发送的所述第二交易的第一哈希,其中所述第一客户端为所述第一交易的发起端。
本申请实施例中,第一交易和第二交易为相互关联的跨链交易,其中,第一交易为属于第一区块链上的交易,第二交易为属于第二区块链上的交易。
示例性的,当用户在第一客户端发起跨链交易,该跨链交易包括相互关联的两个跨链子交易(第一交易和第二交易)。具体的,用户可以通过第一客户端实施交易操作。第一客户端可以根据用户的交易操作生成第一交易对应的交易数据。该交易操作可以是导致第一区块链和第二区块链的账本状态改变的操作。交易数据可以包括但不限于用户标识、交易参数(例如交易金额)、交易时间等。第一客户端可以基于第一交易对应的交易数据生成第一交易的交易信息,该交易信息可以包括第一交易的第一哈希hash(tx1)。
其中,交易标识可以用于区分和确定交易对账本所执行的操作。上述第一交易的第一哈希hash(tx1)可以是一个由数字和字母所构成的字符串。在一些应用场景中,对于每一个交易,可以使用哈希函数对该交易所对应的对账本所执行的操作、上述交易数据等进行处理,将所得到的哈希值作为该交易的交易标识。
需要说明的是,本申请实施例中,第一客户端还可以根据用户的交易操作生成第二交易对应的交易数据,并向第二客户端发送第二交易对应的交易数据,第二客户端可以基于第二交易对应的交易数据生成第二交易的交易信息,该交易信息可以包括第二交易的第二哈希hash(tx2),由于交易标识可以区分和确定交易对账本所执行的操作,因此第二客户端生成的第二交易的第二哈希hash(tx2)可以唯一表示第二交易执行的内容。
本申请实施例中,第一客户端除了生成第一交易的第一哈希hash(tx1),还会生成第二交易的第一哈希exp_hash(tx2)。
可选的,在一种实施例中,第一客户端可以通过调用助手链码获取第二客户端“理应”生成的第二交易的第一哈希exp_hash(tx2)。
具体的,第一客户端在根据用户的交易操作生成第二交易对应的交易数据之后,可以以该交易数据作为输入,通过调用助手链码生成第二交易的第一哈希exp_hash(tx2),该第二交易的第一哈希exp_hash(tx2)可以表示第二客户端应该执行的第二交易唯一对应的交易标识。
可选的,在一种实施例中,第一客户端可以不通过查询助手链码来获取第二交易的第一哈希exp_hash(tx2),而是通过与第二客户端通信,得到第二客户端理应执行的链码和参数,并计算出第二交易的第一哈希exp_hash(tx2)。
本申请实施例中,第一客户端在生成第一交易的交易信息之后,可以将该交易信息发送到第一节点集群中的背书节点。其中,第一交易的交易信息包括第一哈希exp_hash(tx2)以及第一交易的第一哈希hash(tx1)。
上述背书节点收到第一客户端发送的上述第一交易的交易信息后,会调用智能合约中的相关代码模拟执行交易信息所指示的第一交易。例如背书节点将第一交易的交易信息中的交易数据作为输入,在自身对应的账本上模拟执行第一交易,生成包含执行返回值、读操作集合和写操作集合的交易结果。上述背书节点可以将上述读操作集合和写操作集合、背书结果(通过或者不通过)以及背书节点的背书签名进行打包,从而生成背书响应。此外,上述背书响应还可以包括上述交易信息对应的客户端的标识、以及第一哈希exp_hash(tx2)和第一交易的第一哈希hash(tx1)。
本申请实施例中,背书节点可以将多个背书响应发送给客户端。
第一客户端可以接收各背书节点发送的背书响应,然后确定背书响应是否符合预设规则。
本申请实施例中,第一客户端确定背书响应符合预设规则之后,可以将第一交易的交易信息以及多个背书响应中包括的多个背书签名发送到第二节点集群,其中第一交易的交易信息包括第一哈希exp_hash(tx2)和第一交易的第一哈希hash(tx1)。
本申请实施例中,第二节点集群中包含的节点维护第一区块链,第二节点集群为排序集群(orderer group),其包括多个排序节点,每个排序节点都可以是部署在服务器上的抽象节点,每个排序节点都可用于提供区块链技术中的排序服务。
第二节点集群中包含的多个排序节点可以为接收到的交易数据进行全局排序,并将一批排序后的交易数据组合生成区块结构。
当第二节点集群中的一个或多个排序节点收到第一客户端传输的N个交易信息(至少包括第一交易的交易信息以及多个背书响应中包括的多个背书签名)后,可以由至少一个排序节点生成对应的M个区块并对M个区块进行排序,将M个区块传输至第一节点集群,使得第一节点集群对M个区块进行验证,并将验证通过的区块依次添加到对应的区块链中。
本申请实施例中,第一节点集群中的节点可以接收到一个区块,该区块包括第一交易的交易信息以及与第一交易对应的多个背书签名。需要说明的是,为了方便描述,以下将第一节点集群中的节点描述为第一节点。
第一节点接收到包括第一交易的交易信息以及与第一交易对应的多个背书签名的区块,可以对该区块进行验证。关于第一节点如何对该区块进行验证,可参照上述实施例,这里不再赘述。
第一节点可以向所述第三节点发送第六交易,所述第六交易包括所述第一交易的第一哈希hash(tx1),可选的,第四交易包括第二交易的第一哈希exp_hash(tx2)。
本申请实施例中,第三节点集群中包含的节点维护第三区块链,第三节点集群为排序集群(orderer group),其包括多个排序节点,每个排序节点都可以是部署在服务器上的抽象节点,每个排序节点都可用于提供区块链技术中的排序服务。
本申请实施例中,第三节点集群还可以接收到第二节点发送的第二交易的第二哈希hash(tx2)和第一交易的第二哈希exp_hash(tx1)。具体的,第三节点集群还可以接收到第二节点发送的第五交易,该第五交易可以包括第二交易的第二哈希hash(tx2)和第一交易的第二哈希exp_hash(tx1)。
本申请实施例中,第三节点集群中包含的多个排序节点可以为接收到的交易进行全局排序,并将一批排序后的交易数据组合生成区块结构。
具体的,第三节点集群可以生成第四区块,第四区块包括第二交易的第二哈希hash(tx2)和第一交易的第二哈希exp_hash(tx1),第四区块还可以包括第二交易的第一哈希exp_hash(tx2)和第一交易的第一哈希hash(tx1)。
需要说明的是,第二交易的第二哈希hash(tx2)、第一交易的第二哈希exp_hash(tx1)、第二交易的第一哈希exp_hash(tx2)和第一交易的第一哈希hash(tx1)可以在同一个区块,也可以在不同的区块,这里并不限定。
602、所述第一节点接收第三节点发送第二交易的第二哈希,其中,所述第二交易的第一哈希与所述第二交易的第二哈希相等,表示所述第二交易的交易数据正确;所述第二交易的第一哈希与所述第二交易的第二哈希不相等,表示所述第二交易的交易数据不正确。
本申请实施例中,第一节点可以获取所述第三区块链上的第四区块,该第四区块可以包括第二交易的第二哈希hash(tx2),其中第二交易的第二哈希hash(tx2)为第二交易真实执行对应的交易标识,其可以唯一指示具体执行中第二交易的交易数据。
可选的,第四区块还可以包括第一交易的第二哈希exp_hash(tx1)。
类似的,第二节点可以接收到第三节点集群发送的第五区块,该第五区块可以包括第一交易的第一哈希hash(tx1),其中第一交易的第一哈希hash(tx1)为第一交易真实执行对应的交易标识,其可以唯一指示具体执行中第一交易的交易数据。
可选的,第五区块还可以包括第二交易的第一哈希exp_hash(tx2)。
在一种实施例中,若第三节点集群生成的第四区块和第五区块为同一个区块,则第一节点可以接收到第三节点集群发送的区块,该区块包括第二交易的第二哈希hash(tx2)、第一交易的第二哈希exp_hash(tx1)、第一交易的第一哈希hash(tx1)和第二交易的第一哈希exp_hash(tx2)。
本申请实施例中,第一节点可以通过判断第二交易的第二哈希hash(tx2)与第二交易的第一哈希exp_hash(tx2)是否相等,进而判断第二交易是否按照正确的交易数据执行。
具体的,由于第二交易的第一哈希exp_hash(tx2)是第一客户端通过第二交易的交易数据生成的,其可以表示第一客户端认为第二交易应该执行的交易数据。而第二交易的第二哈希hash(tx2)表示第二交易真实执行的交易数据。
因此,通过判断第二交易的第二哈希hash(tx2)与第二交易的第一哈希exp_hash(tx2)是否相等,可以确定第二交易是否按照正确的交易数据执行。
类似的,第二节点可以通过判断第一交易的第一哈希hash(tx1)与第一交易的第二哈希exp_hash(tx1)是否相等,进而判断第一交易是否按照正确的交易数据执行。
具体的,由于第一交易的第二哈希exp_hash(tx1)是第二客户端通过第一交易的交易数据生成的,其可以表示第二客户端认为第一交易应该执行的交易数据。而第一交易的第一哈希hash(tx1)表示第一交易真实执行的交易数据。
因此,通过判断第一交易的第一哈希hash(tx1)与第一交易的第二哈希exp_hash(tx1)是否相等,可以确定第一交易是否按照正确的交易数据执行。
可选的,若第一区块包括第一交易的第二哈希exp_hash(tx1),则第一节点可以通过判断第一交易的第一哈希hash(tx1)与第一交易的第二哈希exp_hash(tx1)是否相等,进而获取到第二节点的判断结果。
若第二区块包括第二交易的第一哈希exp_hash(tx2),则第二节点可以通过判断第二交易的第二哈希hash(tx2)与第二交易的第一哈希exp_hash(tx2)是否相等,进而获取到第一节点的判断结果。
本申请实施例中,若第一节点判断第二交易的第二哈希hash(tx2)与第二交易的第一哈希exp_hash(tx2)相等,则第一节点可以确定第二交易按照正确的交易数据执行。
本申请实施例中,若第二节点判断第一交易的第一哈希hash(tx1)与第一交易的第二哈希exp_hash(tx1)相等,则第二节点可以确定第一交易按照正确的交易数据执行。
本申请实施例中,若第一节点确定第一交易按照正确的交易数据执行,且第二交易按照正确的交易数据执行,则可以执行第一交易。
本申请实施例中,若第一节点确定第一交易没有按照正确的交易数据执行,且第二交易按照正确的交易数据执行,则不执行第一交易。
本申请实施例中,若第一节点确定第一交易按照正确的交易数据执行,且第二交易没有按照正确的交易数据执行,则不执行第一交易。
本申请实施例中,若第二节点确定第一交易按照正确的交易数据执行,且第二交易按照正确的交易数据执行,则可以执行第二交易。
本申请实施例中,若第二节点确定第一交易没有按照正确的交易数据执行,且第二交易按照正确的交易数据执行,则不执行第二交易。
本申请实施例中,若第二节点确定第一交易按照正确的交易数据执行,且第二交易没有按照正确的交易数据执行,则不执行第二交易。
示例性的,若第一交易为A用户向B用户转10个单位的货币,此时,第一交易为第一区块链上A账户的余额减10个单位的货币,第二交易为第二区块链上B账户的余额加10个单位的货币。
此时,第一客户端基于第一交易的交易数据(包括在第一区块链上A账户的余额减10个单位的货币)生成第一交易的第一哈希hash(tx1),以及基于第二交易的交易数据(包括在第二区块链上B账户的余额加10个单位的货币)生成第二交易的第一哈希exp_hash(tx2)。
同样,第二客户端基于第一交易的交易数据(包括在第一区块链上A账户的余额减10个单位的货币)生成第一交易的第二哈希exp_hash(tx1),以及基于第二交易的交易数据(包括在第二区块链上B账户的余额加20个单位的货币)生成第二交易的第二哈希hash(tx2),即第二客户端想在B账户上增加更多的货币。
之后,由于第一节点会接收到第三节点发送的第二交易的第二哈希hash(tx2),由于第二哈希hash(tx2)与第二交易的第一哈希exp_hash(tx2)不同,则第一节点会确定第二交易执行的交易数据不正确,即第二客户端存在欺骗性为,则不执行第一交易。
需要说明的是,图6对应的实施例可以与图3对应的实施例同时进行,这里并不限定。
本申请实施例提供了一种跨链交易方法,包括:所述第一节点获取所述第二交易的第一哈希;所述第一节点获取所述第三区块链上的第四区块,所述第四区块包括第二交易的第二哈希;所述第一节点根据所述第四区块,判断所述第二交易的第一哈希与所述第二交易的第二哈希是否相等。本申请实施例中,第一节点可以通过判断第二交易的第二哈希与第二交易的第一哈希是否相等,进而确定第二交易是否按照正确的交易数据执行,且在第二交易没有按照正确的交易数据执行时,不执行第一交易。
当区块链网络中存在多个跨链交易时,各个跨链交易可能会存在一定的依赖关系,具体的,各个跨链交易的交易数据之间存在一定的依赖关系,例如,有两个跨链交易:跨链交易A和跨链交易B,跨链交易A包括第一交易和第二交易,跨链交易B包括第三交易和第四交易,第一交易和第三交易为第一区块链上的交易,第二交易和第四交易为第二区块链上的交易。
第一交易需要更新A账户的余额,而第三交易也需要更新A账户的余额,第一交易在时序上在第三交易之前。
第二交易需要更新B账户的余额,而第四交易也需要更新B账户的余额,第二交易在时序上在第四交易之后。
此时,第三交易需要第一交易完成之后,才能执行。
第一交易和第二交易属于同一笔跨链交易,则第一交易的执行完成需要依赖于第二交易的执行结果。
第二交易需要第四交易完成之后,才能执行。
第四交易和第三交易属于同一笔跨链交易,则第四交易的执行完成需要依赖于第三交易的执行结果。
即形成了死锁,两笔跨链交易谁都无法完成,造成交易执行阻塞,导致***无法提供服务。
参照图7a,图7a为一种跨链交易的依赖关系示意图,如图7a中示出的那样,第一交易A1和第二交易B1属于同一笔跨链交易,第三交易A2和第四交易B2属于同一笔跨链交易,第一交易A1和第三交易A2具有时序依赖关系,即第一交易A1执行完成之后第三交易A2才可以执行,第四交易B2和第二交易B1具有时序依赖关系,即第四交易B2执行完成之后第二交易B1才可以执行。
此时第一交易A1、第二交易B1、第三交易A2和第四交易B2存在交易死锁的问题。
为了解决上述问题,参照图7b,图7b为本申请实施例提供的一种跨链交易方法的实施例的示意图,具体的,本实施例提供的跨链交易方法,包括:
701、第一节点接收第一交易的交易数据,所述第一交易的交易数据包括目标交易参数。
702、第一节点接收第二交易的交易数据。
703、若所述第二交易的交易数据包括所述目标交易参数,则确定所述第二交易的交易状态为无效。
可选的,本申请实施例中,所述第一交易和第三交易为相互关联的跨链交易,所述第二交易和第四交易为相互关联的跨链交易,所述第一交易和所述第二交易为第一区块链上的交易,所述第三交易和所述第四交易为第二区块链上的交易。
例如,第一交易为A账户的余额减去5单位的货币,第二交易为A账户的余额减去10单位的货币,第三交易为B账户的余额加上5单位的货币,第四交易为B账户的余额加上10单位的货币。
此时,第一交易的交易数据包括目标交易参数“A账户”,第二交易的交易数据包括目标交易参数“A账户”,则第一节点可以直接确定第二交易的交易状态为无效,进行不执行第二交易,即不更新第二交易对应的状态数据库。
本申请实施例中,若确定存在会出现交易死锁情况的跨链交易,则确定其中一笔交易的交易状态为无效,进而可以解决由交易死锁造成的交易执行阻塞。
下面对本申请中一个实施例对应的第一节点进行详细描述,请参阅图8,图8为本申请实施例中第一节点的实施例示意图。本申请实施例中的第一节点800包括:
处理模块801,用于确定第一交易的交易状态为第一状态,所述第一状态表示交易通过共识校验;
获取模块802,用于获取第二交易的交易状态;
所述处理模块801,还用于当所述第二交易的交易状态为所述第一状态时,所述第一节点根据所述第一交易的交易数据修改目标数据,所述目标数据为所述第一节点的状态机中与所述第一交易相关的数据。
本申请实施例中,处理模块801确定第一交易的交易状态为第一状态,所述第一状态表示交易通过共识校验;获取模块802获取第二交易的交易状态;所述处理模块801当所述第二交易的交易状态为所述第一状态时,所述第一节点根据所述第一交易的交易数据修改目标数据,所述目标数据为所述第一节点的状态机中与所述第一交易相关的数据。通过上述方式,第一节点在确定第一交易的交易状态为第一状态之后,并不直接根据第一状态确定是否修改第一节点的状态机,而是接收第二交易的交易状态,并当所述第二交易的交易状态为所述第一状态时,修改第一节点的状态机,使得跨链子交易的执行与否不只是取决于第一交易的共识校验结果,还需要考虑其他相关联的跨链交易的共识校验结果,不会出现相互关联的跨链交易只有一部分成功执行,而另一部分未成功执行的情况,实现了跨链交易在多个区块链上进行原子性执行。
可选的,获取模块802,具体用于:接收第三节点发送的所述第二交易的交易状态,所述第三节点不维护所述第一区块链和所述第二区块链。
可选的,所述第一节点还包括:
发送模块803,用于点向第三节点发送所述第一交易的交易状态,所述第三节点不维护所述第一区块链和所述第二区块链。
可选的,所述发送模块803,具体用于:
所述第一节点向第三节点发送第三交易,所述第三交易包括所述第一交易的交易状态。
下面对本申请中一个实施例对应的第一节点进行详细描述,请参阅图8,图8为本申请实施例中第一节点的实施例示意图。本申请实施例中的第一节点800包括:
所述处理模块801,用于:
计算得到所述第二交易的第一哈希,或所述接收模块,具体用于接收到第一客户端发送的所述第二交易的第一哈希,其中所述第一客户端为所述第一交易的发起端;
所述接收模块804,用于接收第三节点发送第二交易的第二哈希;
其中,所述第二交易的第一哈希与所述第二交易的第二哈希相等,表示所述第二交易的交易数据正确;所述第二交易的第一哈希与所述第二交易的第二哈希不相等,表示所述第二交易的交易数据不正确。
可选的,所述处理模块801,还用于:
计算得到所述第一交易的第一哈希,或所述接收模块,具体用于接收到第一客户端发送的所述第一交易的第一哈希;
所述发送模块803,还用于向所述第三节点发送所述第一交易的第一哈希。
可选的,所述发送模块803,还用于:
向第四节点广播同步信息,所述同步信息用于表示所述第一节点已根据所述第一交易的交易数据修改所述第一节点的状态机中与所述第一交易相关的目标数据,所述第一节点和所述第四节点属于同一个节点集群。
下面对本申请中一个实施例对应的跨链交易装置进行详细描述,请参阅图9,图9为本申请实施例中第三节点的实施例示意图。本申请实施例中的第三节点900包括:
获取模块901,用于接收第二节点发送的第二交易的交易状态,所述第二节点维护第二区块链,所述第二交易属于所述第二区块链;
发送模块903,用于向所述第一节点发送所述第二交易的交易状态,以便所述第一节点基于所述第二交易的交易状态和第一交易的交易状态处理目标数据,其中所述目标数据为所述第一节点的状态机中与所述第一交易相关的数据,所述第二交易与所述第一交易为相关联的跨链交易,所述第一交易属于第一区块链,第一节点维护所述第一区块链,所述第三节点不维护所述第一区块链和所述第二区块链。
可选的,所述第三节点还包括:
处理模块902,用于生成包括所述第二交易的交易状态的第一区块。
可选的,所述接收模块,还用于:
接收至少一个第五节点发送的交易;
所述处理模块,具体用于:
基于接收到所述至少一个第五节点发送的交易以及所述第二交易的交易状态的时间,对所述至少一个第五节点发送的交易和所述第二交易的交易状态进行排序,生成至少一个区块,其中第一区块为所述至少一个区块中的一个区块,所述第一区块包括所述第二交易的交易状态。
可选的,所述发送模块903,具体用于:
向所述第一节点发送所述第一区块。
可选的,所述接收模块,具体用于:
接收所述第二节点发送的第四交易,所述第四交易包括所述第二交易的交易状态。
可选的,所述接收模块,还用于:
接收所述第二节点发送的第二交易的第二哈希;
所述发送模块,还用于:
向所述第一节点发送所述第二交易的第二哈希,以便所述第一节点基于所述第二交易的第二哈希与第二交易的第一哈希确定所述第二交易的交易数据的正确性,其中,所述第二交易的第一哈希为所述第一节点计算得到,或来自于第一客户端,所述第一客户端为所述第一交易的发起端。
本申请实施例还提供了一种跨链交易装置,如图10所示,图10为本申请实施例中跨链交易装置的一种结构示意图,为了便于说明,仅示出了与本申请实施例相关的部分,具体技术细节未揭示的,请参照本申请实施例方法部分。该跨链交易装置运行于终端,终端可以为包括手机、平板电脑、个人数字助理(personal digital assistant,PDA)、销售终端(point of sales,POS)、车载电脑等任意终端设备,以终端为手机为例:
手机包括:射频(radio frequency,RF)电路1110、存储器1120、输入单元1130、显示单元1140、传感器1150、音频电路1160、无线保真(wireless fidelity,WiFi)模块1170、处理器1180、以及电源1190等部件。本领域技术人员可以理解,图10中示出的手机结构并不构成对手机的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
RF电路1110可用于收发信息或通话过程中,信号的接收和发送,特别地,将基站的下行信息接收后,给处理器1180处理;另外,将设计上行的数据发送给基站。通常,RF电路1110包括但不限于天线、至少一个放大器、收发信机、耦合器、低噪声放大器(low noiseamplifier,LNA)、双工器等。此外,RF电路1110还可以通过无线通信与网络和其他设备通信。上述无线通信可以使用任一通信标准或协议,包括但不限于全球移动通讯***(globalsystem of mobile communication,GSM)、通用分组无线服务(general packet radioservice,GPRS)、码分多址(code division multiple access,CDMA)、宽带码分多址(wideband code division multiple access,WCDMA)、长期演进(long term evolution,LTE)、电子邮件、短消息服务(short messaging service,SMS)等。
存储器1120可用于存储软件程序以及模块,处理器1180通过运行存储在存储器1120的软件程序以及模块,从而执行手机的各种功能应用以及数据处理。存储器1120可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作***、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据手机的使用所创建的数据(比如音频数据、电话本等)等。此外,存储器1120可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。
输入单元1130可用于接收输入的数字或字符信息,以及产生与手机的用户设置以及功能控制有关的键信号输入。具体地,输入单元1130可包括触控面板1131以及其他输入设备1132。触控面板1131,也称为触摸屏,可收集用户在其上或附近的触摸操作(比如用户使用手指、触笔等任何适合的物体或附件在触控面板1131上或在触控面板1131附近的操作),并根据预先设定的程式驱动相应的连接装置。可选的,触控面板1131可包括触摸检测装置和触摸控制器两个部分。其中,触摸检测装置检测用户的触摸方位,并检测触摸操作带来的信号,将信号传送给触摸控制器;触摸控制器从触摸检测装置上接收触摸信息,并将它转换成触点坐标,再送给处理器1180,并能接收处理器1180发来的命令并加以执行。此外,可以采用电阻式、电容式、红外线以及表面声波等多种类型实现触控面板1131。除了触控面板1131,输入单元1130还可以包括其他输入设备1132。具体地,其他输入设备1132可以包括但不限于物理键盘、功能键(比如音量控制按键、开关按键等)、轨迹球、鼠标、操作杆等中的一种或多种。
显示单元1140可用于显示由用户输入的信息或提供给用户的信息以及手机的各种菜单。显示单元1140可包括显示面板1141,可选的,可以采用液晶显示器(liquidcrystal display,LCD)、有机发光二极管(organic light-emitting diode,OLED)等形式来配置显示面板1141。进一步的,触控面板1131可覆盖显示面板1141,当触控面板1131检测到在其上或附近的触摸操作后,传送给处理器1180以确定触摸事件的类型,随后处理器1180根据触摸事件的类型在显示面板1141上提供相应的视觉输出。虽然在图10中,触控面板1181与显示面板1141是作为两个独立的部件来实现手机的输入和输入功能,但是在某些实施例中,可以将触控面板1131与显示面板1141集成而实现手机的输入和输出功能。
手机还可包括至少一种传感器1150,比如光传感器、运动传感器以及其他传感器。具体地,光传感器可包括环境光传感器及接近传感器,其中,环境光传感器可根据环境光线的明暗来调节显示面板1141的亮度,接近传感器可在手机移动到耳边时,关闭显示面板1141和/或背光。作为运动传感器的一种,加速计传感器可检测各个方向上(一般为三轴)加速度的大小,静止时可检测出重力的大小及方向,可用于识别手机姿态的应用(比如横竖屏切换、相关游戏、磁力计姿态校准)、振动识别相关功能(比如计步器、敲击)等;至于手机还可配置的陀螺仪、气压计、湿度计、温度计、红外线传感器等其他传感器,在此不再赘述。
音频电路1160、扬声器1161,传声器1162可提供用户与手机之间的音频接口。音频电路1160可将接收到的音频数据转换后的电信号,传输到扬声器1161,由扬声器1161转换为声音信号输出;另一方面,传声器1162将收集的声音信号转换为电信号,由音频电路1160接收后转换为音频数据,再将音频数据输出处理器1180处理后,经RF电路1110以发送给比如另一手机,或者将音频数据输出至存储器1120以便进一步处理。
WiFi属于短距离无线传输技术,手机通过WiFi模块1170可以帮助用户收发电子邮件、浏览网页和访问流式媒体等,它为用户提供了无线的宽带互联网访问。虽然图10示出了WiFi模块1170,但是可以理解的是,其并不属于手机的必须构成,完全可以根据需要在不改变申请的本质的范围内而省略。
处理器1180是手机的控制中心,利用各种接口和线路连接整个手机的各个部分,通过运行或执行存储在存储器1120内的软件程序和/或模块,以及调用存储在存储器1120内的数据,执行手机的各种功能和处理数据,从而对手机进行整体监控。可选的,处理器1180可包括一个或多个处理单元;可选的,处理器1180可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作***、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器1180中。
手机还包括给各个部件供电的电源1190(比如电池),可选的,电源可以通过电源管理***与处理器1180逻辑相连,从而通过电源管理***实现管理充电、放电、以及功耗管理等功能。
尽管未示出,手机还可以包括摄像头、蓝牙模块等,在此不再赘述。
在本申请实施例中,该终端所包括的处理器1180可以执行上述图3、图4a、图4b及图6对应的实施例描述的步骤。
本申请实施例提供的跨链交易装置还可以部署于服务器中,该服务器可以为单个服务器也可以为多个服务器组成的服务器集群,下面,以单个服务器进行描述。请参阅图11,图11为本申请实施例中提供的一种服务器结构示意图,该服务器1200可因配置或性能不同而产生比较大的差异,可以包括一个或一个以***处理器(central processingunits,CPU)1222(例如,一个或一个以上处理器)和存储器1232,一个或一个以上存储应用程序1242或数据1244的存储介质1230(例如一个或一个以上海量存储设备)。其中,存储器1232和存储介质1230可以是短暂存储或持久存储。存储在存储介质1230的程序可以包括一个或一个以上模块(图示没标出),每个模块可以包括对服务器中的一系列指令操作。更进一步地,中央处理器1222可以设置为与存储介质1230通信,在服务器1200上执行存储介质1230中的一系列指令操作。
服务器1200还可以包括一个或一个以上电源1226,一个或一个以上有线或无线网络接口1250,一个或一个以上输入输出接口1258,和/或,一个或一个以上操作***1241,例如Windows ServerTM,Mac OS XTM,UnixTM,LinuxTM,FreeBSDTM等等。
上述实施例中由服务器所执行的步骤可以基于该图11所示的服务器结构。
CPU 1222可以执行上述图3、图4a、图4b及图6对应的实施例描述的步骤。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。
所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(Digital Subscriber Line,DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存储的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘Solid State Disk(SSD))等。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的***,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的***,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。
Claims (38)
1.一种跨链交易方法,其特征在于,应用于第一节点,所述第一节点维护第一区块链,第一交易属于所述第一区块链,第二交易属于第二区块链,第二节点维护所述第二区块链,所述方法包括:
所述第一节点确定第一交易的交易状态为第一状态,所述第一状态表示交易通过共识校验;
所述第一节点获取所述第二交易的交易状态;
当所述第二交易的交易状态为所述第一状态时,所述第一节点根据所述第一交易的交易数据修改目标数据,所述目标数据为所述第一节点的状态机中与所述第一交易相关的数据。
2.根据权利要求1所述的方法,其特征在于,所述第一节点获取所述第二交易的交易状态,包括:
所述第一节点接收第三节点发送的所述第二交易的交易状态,所述第三节点不维护所述第一区块链和所述第二区块链。
3.根据权利要求1或2所述的方法,其特征在于,所述方法还包括:
所述第一节点向第三节点发送所述第一交易的交易状态,所述第三节点不维护所述第一区块链和所述第二区块链。
4.根据权利要求3所述的方法,其特征在于,所述第一节点向第三节点发送所述第一交易的交易状态,包括:
所述第一节点向第三节点发送第三交易,所述第三交易包括所述第一交易的交易状态。
5.根据权利要求1至4任一所述的方法,其特征在于,所述方法还包括:
所述第一节点计算得到所述第二交易的第一哈希,或接收到第一客户端发送的所述第二交易的第一哈希,其中所述第一客户端为所述第一交易的发起端;
所述第一节点接收第三节点发送第二交易的第二哈希;
其中,所述第二交易的第一哈希与所述第二交易的第二哈希相等,表示所述第二交易的交易数据正确;所述第二交易的第一哈希与所述第二交易的第二哈希不相等,表示所述第二交易的交易数据不正确。
6.根据权利要求1至5任一所述的方法,其特征在于,所述方法还包括:
所述第一节点计算得到所述第一交易的第一哈希,或接收到第一客户端发送的所述第一交易的第一哈希;
所述第一节点向所述第三节点发送所述第一交易的第一哈希。
7.根据权利要求1至6任一所述的方法,其特征在于,所述第一节点根据所述第一交易的交易数据修改所述第一节点的状态机中与所述第一交易相关的目标数据之后,所述方法还包括:
所述第一节点向第四节点广播同步信息,所述同步信息用于表示所述第一节点已根据所述第一交易的交易数据修改所述第一节点的状态机中与所述第一交易相关的目标数据,所述第一节点和所述第四节点属于同一个节点集群。
8.一种跨链交易方法,其特征在于,所述方法包括:
第三节点接收第二节点发送的第二交易的交易状态,所述第二节点维护第二区块链,所述第二交易属于所述第二区块链;
所述第三节点向所述第一节点发送所述第二交易的交易状态,以便所述第一节点基于所述第二交易的交易状态和第一交易的交易状态处理目标数据,其中所述目标数据为所述第一节点的状态机中与所述第一交易相关的数据,所述第一交易属于第一区块链,第一节点维护所述第一区块链,所述第三节点不维护所述第一区块链和所述第二区块链。
9.根据权利要求8所述的方法,其特征在于,所述方法还包括:
所述第三节点生成包括所述第二交易的交易状态的第一区块。
10.根据权利要求9所述的方法,其特征在于,所述方法还包括:
所述第三节点接收至少一个第五节点发送的交易;
所述第三节点生成包括所述第二交易的交易状态的第一区块,包括:
所述第三节点基于接收所述至少一个第五节点发送的交易的时间以及接收所述第二交易的交易状态的时间,对所述至少一个第五节点发送的交易和所述第二交易的交易状态进行排序,生成至少一个区块,其中第一区块为所述至少一个区块中的一个区块,所述第一区块包括所述第二交易的交易状态。
11.根据权利要求9或10所述的方法,其特征在于,所述第三节点向所述第一节点发送第二交易的交易状态,包括:
所述第三节点向所述第一节点发送所述第一区块。
12.根据权利要求8至11任一所述的方法,其特征在于,所述第三节点接收第二节点发送的第二交易的交易状态,包括:
所述第三节点接收所述第二节点发送的第四交易,所述第四交易包括所述第二交易的交易状态。
13.根据权利要求8至12任一所述的方法,其特征在于,所述方法还包括:
所述第三节点接收所述第二节点发送的第二交易的第二哈希;
所述第三节点向所述第一节点发送所述第二交易的第二哈希,以便所述第一节点基于所述第二交易的第二哈希与第二交易的第一哈希确定所述第二交易的交易数据的正确性,其中,所述第二交易的第一哈希为所述第一节点计算得到,或来自于第一客户端,所述第一客户端为所述第一交易的发起端。
14.一种跨链交易方法,其特征在于,应用于跨链交易***,所述跨链交易***包括第一节点、第二节点和第三节点,所述第一节点维护第一区块链,第一交易属于所述第一区块链,所述第二交易属于第二区块链,第二节点维护所述第二区块链,所述第三节点不维护所述第一区块链和所述第二区块链,所述方法包括:
所述第一节点确定第一交易的交易状态为第一状态,所述第一状态表示交易通过共识校验;
所述第二节点向所述第三节点发送所述第二交易的交易状态;
所述第三节点向所述第一节点发送所述第二交易的交易状态;
当所述第二交易的交易状态为所述第一状态时,所述第一节点根据所述第一交易的交易数据修改目标数据,所述目标数据为所述第一节点的状态机中与所述第一交易相关的数据。
15.根据权利要求14所述的方法,其特征在于,所述方法还包括:
所述第三节点生成包括所述第二交易的交易状态的第一区块。
16.根据权利要求15所述的方法,其特征在于,所述方法还包括:
所述第三节点接收至少一个第四节点发送的交易;
所述第三节点生成包括所述第二交易的交易状态的第一区块,包括:
所述第三节点基于接收所述至少一个第五节点发送的交易的时间以及接收所述第二交易的交易状态的时间,对所述至少一个第五节点发送的交易和所述第二交易的交易状态进行排序,生成至少一个区块,其中第一区块为所述至少一个区块中的一个区块,所述第一区块包括所述第二交易的交易状态。
17.根据权利要求14或15所述的方法,其特征在于,所述第三节点向所述第一节点发送第二交易的交易状态,包括:
所述第三节点向所述第一节点发送所述第一区块。
18.根据权利要求14至17任一所述的方法,其特征在于,所述第二节点向所述第三节点发送所述第二交易的交易状态,包括:
所述第二节点向所述第三节点发送第四交易,所述第四交易包括所述第二交易的交易状态。
19.根据权利要求15所述的方法,其特征在于,所述第一节点向第三节点发送所述第一交易的交易状态,包括:
所述第一节点向第三节点发送第三交易,所述第三交易包括所述第一交易的交易状态。
20.根据权利要求14至19任一所述的方法,其特征在于,所述方法还包括:
所述第一节点计算得到所述第二交易的第一哈希,或接收到第一客户端发送的所述第二交易的第一哈希,其中所述第一客户端为所述第一交易的发起端;
所述第三节点接收所述第二节点发送的第二交易的第二哈希;
所述第一节点接收所述第三节点发送的所述第二交易的第二哈希;
其中,所述第二交易的第一哈希与所述第二交易的第二哈希相等,表示所述第二交易的交易数据正确;所述第二交易的第一哈希与所述第二交易的第二哈希不相等,表示所述第二交易的交易数据不正确。
21.根据权利要求15至20任一所述的方法,其特征在于,所述跨链交易***还包括第四节点,所述第一节点和所述第四节点属于同一个节点集群,所述第一节点根据所述第一交易的交易数据修改所述第一节点的状态机中与所述第一交易相关的目标数据之后,所述方法还包括:
所述第一节点向第四节点广播同步信息,所述同步信息用于表示所述第一节点已根据所述第一交易的交易数据修改所述第一节点的状态机中与所述第一交易相关的目标数据。
22.一种第一节点,其特征在于,所述第一节点维护第一区块链,第一交易属于所述第一区块链,所述第二交易属于第二区块链,第二节点维护所述第二区块链,所述第一节点包括:
处理模块,用于确定第一交易的交易状态为第一状态,所述第一状态表示交易通过共识校验;
获取模块,用于获取所述第二交易的交易状态;
所述处理模块,还用于当所述第二交易的交易状态为所述第一状态时,所述第一节点根据所述第一交易的交易数据修改目标数据,所述目标数据为所述第一节点的状态机中与所述第一交易相关的数据。
23.根据权利要求22所述的第一节点,其特征在于,所述获取模块,具体用于:
接收第三节点发送的所述第二交易的交易状态,所述第三节点不维护所述第一区块链和所述第二区块链。
24.根据权利要求21或22所述的第一节点,其特征在于,所述第一节点还包括:
发送模块,用于点向第三节点发送所述第一交易的交易状态,所述第三节点不维护所述第一区块链和所述第二区块链。
25.根据权利要求24所述的第一节点,其特征在于,所述发送模块,具体用于:
所述第一节点向第三节点发送第三交易,所述第三交易包括所述第一交易的交易状态。
26.根据权利要求22至25任一所述的第一节点,其特征在于,所述处理模块,还用于:
计算得到所述第二交易的第一哈希,或所述接收模块,具体用于接收到第一客户端发送的所述第二交易的第一哈希,其中所述第一客户端为所述第一交易的发起端;
所述接收模块,具体用于接收第三节点发送第二交易的第二哈希;
其中,所述第二交易的第一哈希与所述第二交易的第二哈希相等,表示所述第二交易的交易数据正确;所述第二交易的第一哈希与所述第二交易的第二哈希不相等,表示所述第二交易的交易数据不正确。
27.根据权利要求22至26任一所述的第一节点,其特征在于,所述处理模块,还用于:
计算得到所述第一交易的第一哈希,或所述接收模块,具体用于接收到第一客户端发送的所述第一交易的第一哈希;
所述发送模块,还用于向所述第三节点发送所述第一交易的第一哈希。
28.根据权利要求22至27任一所述的第一节点,其特征在于,所述发送模块,还用于:
向第四节点广播同步信息,所述同步信息用于表示所述第一节点已根据所述第一交易的交易数据修改所述第一节点的状态机中与所述第一交易相关的目标数据,所述第一节点和所述第四节点属于同一个节点集群。
29.一种第三节点,其特征在于,包括:
接收模块,用于接收第二节点发送的第二交易的交易状态,所述第二节点维护第二区块链,所述第二交易属于所述第二区块链;
发送模块,用于向所述第一节点发送所述第二交易的交易状态,以便所述第一节点基于所述第二交易的交易状态和第一交易的交易状态处理目标数据,其中所述目标数据为所述第一节点的状态机中与所述第一交易相关的数据,所述第一交易属于第一区块链,第一节点维护所述第一区块链,所述第三节点不维护所述第一区块链和所述第二区块链。
30.根据权利要求29所述的第三节点,其特征在于,所述第三节点还包括:
处理模块,用于生成包括所述第二交易的交易状态的第一区块。
31.根据权利要求30所述的第三节点,其特征在于,所述接收模块,还用于:
接收至少一个第五节点发送的交易;
所述处理模块,具体用于:
基于接收到所述至少一个第五节点发送的交易以及所述第二交易的交易状态的时间,对所述至少一个第五节点发送的交易和所述第二交易的交易状态进行排序,生成至少一个区块,其中第一区块为所述至少一个区块中的一个区块,所述第一区块包括所述第二交易的交易状态。
32.根据权利要求30或31所述的第三节点,其特征在于,所述发送模块,具体用于:
向所述第一节点发送所述第一区块。
33.根据权利要求29至32任一所述的第三节点,其特征在于,所述接收模块,具体用于:
接收所述第二节点发送的第四交易,所述第四交易包括所述第二交易的交易状态。
34.根据权利要求29至33任一所述的第三节点,其特征在于,所述接收模块,还用于:
接收所述第二节点发送的第二交易的第二哈希;
所述发送模块,还用于:
向所述第一节点发送所述第二交易的第二哈希,以便所述第一节点基于所述第二交易的第二哈希与第二交易的第一哈希确定所述第二交易的交易数据的正确性,其中,所述第二交易的第一哈希为所述第一节点计算得到,或来自于第一客户端,所述第一客户端为所述第一交易的发起端。
35.一种跨链交易装置,包括:存储器、收发器、处理器以及总线***;其中,所述存储器用于存储程序和指令;所述收发器用于在所述处理器的控制下接收或发送信息;所述处理器用于执行所述存储器中的程序;所述总线***用于连接所述存储器、所述收发器以及所述处理器,以使所述存储器、所述收发器以及所述处理器进行通信;所述处理器用于调用所述存储器中的程序指令,执行如权利要求1至7中任一所述的跨链交易方法。
36.一种跨链交易装置,包括:存储器、收发器、处理器以及总线***;其中,所述存储器用于存储程序和指令;所述收发器用于在所述处理器的控制下接收或发送信息;所述处理器用于执行所述存储器中的程序;所述总线***用于连接所述存储器、所述收发器以及所述处理器,以使所述存储器、所述收发器以及所述处理器进行通信;所述处理器用于调用所述存储器中的程序指令,执行如权利要求8至13中任一所述的跨链交易方法。
37.一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,所述指令在计算机上运行时,使得所述计算机执行如权利要求1至7中任一所述的跨链交易方法。
38.一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,所述指令在计算机上运行时,使得所述计算机执行如权利要求8至13中任一所述的跨链交易方法。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
EP20847049.2A EP3996028A4 (en) | 2019-07-26 | 2020-07-24 | METHOD AND DEVICE FOR CROSS-CHAIN TRANSACTIONS |
PCT/CN2020/104551 WO2021018048A1 (zh) | 2019-07-26 | 2020-07-24 | 一种跨链交易方法和装置 |
US17/585,250 US11966378B2 (en) | 2019-07-26 | 2022-01-26 | Cross-chain transaction method and apparatus |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2019106837351 | 2019-07-26 | ||
CN201910683735 | 2019-07-26 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112308713A true CN112308713A (zh) | 2021-02-02 |
Family
ID=74336295
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911129391.6A Pending CN112308713A (zh) | 2019-07-26 | 2019-11-18 | 一种跨链交易方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112308713A (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113420083A (zh) * | 2021-06-02 | 2021-09-21 | 湖南大学 | 一种具有可拓展分布式账本的异构并行区块链结构 |
CN113781228A (zh) * | 2021-09-18 | 2021-12-10 | 北京俩撇科技有限公司 | 一种跨链资产转移方法、装置、设备和存储介质 |
CN114579595A (zh) * | 2022-05-06 | 2022-06-03 | 中国信息通信研究院 | 数据写入方法和装置、计算机可读存储介质、电子设备 |
WO2023082883A1 (zh) * | 2021-11-15 | 2023-05-19 | 腾讯科技(深圳)有限公司 | 跨区块链处理事务的方法、装置、计算机设备、计算机存储介质及计算机程序产品 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107248076A (zh) * | 2017-06-24 | 2017-10-13 | 北京天德科技有限公司 | 一种双链式跨链交易的区块链互联网模型的核心算法 |
CN109150943A (zh) * | 2017-06-27 | 2019-01-04 | 华为技术有限公司 | 信息的传输方法、装置和*** |
CN109426949A (zh) * | 2017-08-29 | 2019-03-05 | 华为技术有限公司 | 一种跨链交易方法及装置 |
-
2019
- 2019-11-18 CN CN201911129391.6A patent/CN112308713A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107248076A (zh) * | 2017-06-24 | 2017-10-13 | 北京天德科技有限公司 | 一种双链式跨链交易的区块链互联网模型的核心算法 |
CN109150943A (zh) * | 2017-06-27 | 2019-01-04 | 华为技术有限公司 | 信息的传输方法、装置和*** |
CN109426949A (zh) * | 2017-08-29 | 2019-03-05 | 华为技术有限公司 | 一种跨链交易方法及装置 |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113420083A (zh) * | 2021-06-02 | 2021-09-21 | 湖南大学 | 一种具有可拓展分布式账本的异构并行区块链结构 |
CN113420083B (zh) * | 2021-06-02 | 2024-03-19 | 湖南大学 | 一种具有可拓展分布式账本的异构并行区块链结构的*** |
CN113781228A (zh) * | 2021-09-18 | 2021-12-10 | 北京俩撇科技有限公司 | 一种跨链资产转移方法、装置、设备和存储介质 |
WO2023082883A1 (zh) * | 2021-11-15 | 2023-05-19 | 腾讯科技(深圳)有限公司 | 跨区块链处理事务的方法、装置、计算机设备、计算机存储介质及计算机程序产品 |
CN114579595A (zh) * | 2022-05-06 | 2022-06-03 | 中国信息通信研究院 | 数据写入方法和装置、计算机可读存储介质、电子设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112308713A (zh) | 一种跨链交易方法和装置 | |
CN110163004B (zh) | 一种区块链生成的方法、相关设备及*** | |
EP3996028A1 (en) | Cross-chain transaction method and apparatus | |
CN110147237B (zh) | 一种冗余资源去除方法和装置 | |
CN109067582B (zh) | 一种数据管理***、方法及装置 | |
US10942949B2 (en) | Data processing method and apparatus for virtual resource | |
CN110875850B (zh) | 一种固件升级方法、***、可读存储介质及终端设备 | |
CN110152299B (zh) | 一种游戏资源的构建方法和装置 | |
CN106155750A (zh) | 一种资源文件的加载方法和装置 | |
CN112245903B (zh) | 云应用中网络状态指示方法、操作***、装置及存储介质 | |
CN111414374B (zh) | 一种区块链交易并发处理方法、装置及设备 | |
CN111340587B (zh) | 一种虚拟商品管理方法以及相关装置 | |
CN111078556B (zh) | 应用测试方法及装置 | |
CN111736980A (zh) | 一种内存管理方法及装置 | |
CN103346921A (zh) | 用户管理方法和相关设备及通信*** | |
CN110213313B (zh) | 一种文件上传的方法、相关装置及*** | |
CN111259452A (zh) | 一种基于区块链的数据管理方法以及相关装置 | |
US20240256516A1 (en) | Cross-chain transaction method and apparatus | |
CN110585733B (zh) | 一种虚拟资产交易的方法以及相关装置 | |
CN110489488B (zh) | 一种数据处理方法和装置 | |
CN111367929B (zh) | 数据管理方法和装置及存储介质 | |
CN110233734B (zh) | 签名校验方法及相关产品 | |
CN107635291A (zh) | 一种共享数据的方法、终端及计算机可读存储介质 | |
CN113806801B (zh) | 交易信息上链方法、装置、计算机设备及存储介质 | |
CN110691095B (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 |