CN114255031A - 用于执行交易的跨区块链的系统、跨链交易方法及设备 - Google Patents
用于执行交易的跨区块链的系统、跨链交易方法及设备 Download PDFInfo
- Publication number
- CN114255031A CN114255031A CN202011012791.1A CN202011012791A CN114255031A CN 114255031 A CN114255031 A CN 114255031A CN 202011012791 A CN202011012791 A CN 202011012791A CN 114255031 A CN114255031 A CN 114255031A
- Authority
- CN
- China
- Prior art keywords
- transaction
- cross
- chain
- node
- sub
- 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
- G06Q20/00—Payment architectures, schemes or protocols
- G06Q20/38—Payment protocols; Details thereof
- G06Q20/382—Payment protocols; Details thereof insuring higher security of transaction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/64—Protecting data integrity, e.g. using checksums, certificates or signatures
-
- 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
- G06Q20/00—Payment architectures, schemes or protocols
- G06Q20/38—Payment protocols; Details thereof
-
- 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
- G06Q20/00—Payment architectures, schemes or protocols
- G06Q20/38—Payment protocols; Details thereof
- G06Q20/382—Payment protocols; Details thereof insuring higher security of transaction
- G06Q20/3821—Electronic credentials
- G06Q20/38215—Use of certificates or encrypted proofs of transaction rights
-
- 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
- G06Q20/00—Payment architectures, schemes or protocols
- G06Q20/38—Payment protocols; Details thereof
- G06Q20/382—Payment protocols; Details thereof insuring higher security of transaction
- G06Q20/3825—Use of electronic signatures
-
- 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
- G06Q20/00—Payment architectures, schemes or protocols
- G06Q20/38—Payment protocols; Details thereof
- G06Q20/382—Payment protocols; Details thereof insuring higher security of transaction
- G06Q20/3829—Payment protocols; Details thereof insuring higher security of transaction involving key management
Landscapes
- Engineering & Computer Science (AREA)
- Business, Economics & Management (AREA)
- Accounting & Taxation (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- Finance (AREA)
- General Business, Economics & Management (AREA)
- Strategic Management (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Computer Hardware Design (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)
Abstract
本申请提供一种用于执行交易的跨区块链的系统、跨链交易方法及设备,其中,方法包括:向第一节点发送用于指示执行第一子交易的第一指令,以及向第二中继器发送跨链交易的请求,其中,第一节点维护第一区块链,第二中继器对应第二区块链,跨链交易包括在第一区块链上执行的第一子交易和在第二区块链上执行的第二子交易;接收来自第一节点的第一子交易的执行结果,以及接收来自第二中继器的第二子交易的执行结果;在第一中继器的可信执行环境内,根据第一子交易的执行结果和第二子交易的执行结果确定跨链交易的执行结果。采用本申请实施例,能够确保跨链流程可信和跨链交易隔离、跨链交易原子性。
Description
技术领域
本申请涉及区块链技术领域,尤其涉及一种用于执行交易的跨区块链的系统、跨链交易方法及设备。
背景技术
区块链技术以其去中心化、不可篡改、可追溯等优势而应用于众多领域。随着区块链技术的快速发展和国家政策的大力支持,区块链底层技术研究和产业应用探索呈现出爆发式增长态势。目前区块链技术已广泛应用于金融、政务服务、物联网等多个业务场景中,国内外也涌现出多个区块链平台,国外如Ethereum、Hyperledger Fabric,国内如阿里、腾讯、趣链、微众银行等企业,均有自研区块链平台和相应落地应用。目前各企业聚焦于根据自身业务构建差异化的区块链平台,由此诞生出各种多异构、独立的底层区块链平台,形成诸多相互隔绝的“信息孤岛”。随着应用生态的发展,构建拥抱差异、相互协作、多方共赢的区块链生态网络的需求迫切,跨越异构平台实现多链安全可信、互联互通和价值转移已成为当前区块链技术的研究重点,跨链技术也成为当前各区块链平台的关键技术和核心竞争力。然而,如何实现跨链流程可信是急需解决的问题。
发明内容
本申请实施例公开了一种用于执行交易的跨区块链的系统、跨链交易方法及设备,能够确保跨链流程可信。
本申请实施例第一方面公开了一种用于执行交易的跨区块链的系统,包括第一中继器、第二中继器、第一节点、第二节点;当需要在异构的第一区块链和第二区块链之间进行跨链交易时,第一中继器在获取到跨链交易的请求之后,向第一节点发送用于指示执行第一子交易的第一指令,以及向第二中继器发送跨链交易的请求;其中,第一中继器为与第一节点连接的中继器,第一节点维护第一区块链,第二中继器为与第二节点连接的中继器,第二节点维护第二区块链,跨区块链的系统执行的跨链交易包括在第一区块链上执行的第一子交易和在第二区块链上执行的第二子交易;第二中继器在接收到来自第一中继器的跨链交易的请求之后,会向第二节点发送用于指示执行第二子交易的第二指令;第一节点接收到第一指令之后,执行第一子交易,并向第一中继器发送第一子交易的执行结果;第二节点接收到第二指令之后,执行第二子交易,并向第二中继器发送第二子交易的执行结果;第二中继器在接收到第二子交易的执行结果之后,将第二子交易的执行结果发送给第一中继器;第一中继器在接收到第一子交易的执行结果和第二子交易的执行结果之后,在其可信执行环境内,根据第一子交易的执行结果和第二子交易的执行结果确定跨链交易的执行结果;应理解,由于中继器具备可信执行环境,中继器在可信执行环境内确定跨链交易的执行结果,该确定跨链交易的执行结果是否可信,从而使得跨链交易流程是可信的。需要说明的是,一个区块链网络中包括多个节点,这多个节点共同维护该区块链,也即该区块链网络是以这多个节点为硬件架构,实现分布式数据存储、点对点传输、共识机制、加密算法等功能;对于第一区块链来说,第一节点是共同维护第一区块链的多个节点中的任意一个;对于第二区块链来说,第二节点是共同维护第二区块链的多个节点中的任意一个。
在一种示例性的实施方式中,跨链管理合约可以记录跨链交易的关键字以及该跨链交易的关键字的状态,当跨链管理合约中存在关键字的记录时,节点上的其他跨链交易或者普通交易需要中止或者直接执行失败,该关键字的记录包括关键字和关键字的状态;第一节点在接收到第一指令后,先在第一跨链管理合约中查询是否存在跨链交易的关键字的记录;若第一跨链管理合约存在该关键字的记录,说明第一区块链还处于上一次跨链流程中,则向第一中继器发送第一子交易的第一执行结果,其中,第一子交易的第一执行结果指示第一子交易执行失败;若不存在该关键字的记录,说明第一区块链不处于跨链流程中,则执行第一子交易以得到该关键字的第一状态,并在该第一跨链管理合约中记录该关键字的第一状态,以及向第一中继器发送第一子交易的第二执行结果。应理解,在执行跨链交易之前,先去第一跨链管理合约中查询是否存在跨链交易的关键字的记录,在第一跨链管理合约中存在关键字的记录时,本次跨链交易中止或者直接执行失败,从而本次跨链交易不会干扰上一次跨链交易;在第一跨链管理合约中不存在关键字的记录时,执行第一子交易以得到该关键字的第一状态,并在该第一跨链管理合约中记录该关键字的第一状态,之后第一节点上的其他跨链交易或者普通交易都要中止或者直接执行失败,从而其他跨链交易或者普通交易不会干扰本次跨链交易,由此实现跨链交易隔离。
在一种示例性的实施方式中,第一中继器在确认了跨链交易的执行结果之后,会向第一节点发送第三指令;若跨链交易的执行结果指示跨链交易成功,第一中继器向第一节点发送的第三指令用于指示跨链交易成功;若跨链交易的执行结果指示跨链交易失败,第一中继器向第一节点发送的第三指令用于指示跨链交易失败。应理解,无论跨链交易成功与否,第一中继器都通过第三指令将跨链交易成功与否的情况告知第一节点,以便于第一节点针对跨链交易成功与否的不同情况执行相应的操作,使得确保跨链交易的持久性和一致性。
在一种示例性的实施方式中,若第三指令指示跨链交易成功,第一节点则持久化关键字的第一状态,并删除第一跨链管理合约中记录的关键字的第一状态;若第三指令指示跨链交易失败,第一节点则将关键字的状态恢复到执行第一子交易前的状态,并删除第一跨链管理合约中记录的关键字的第一状态。应理解,跨链交易成功,第一节点持久化关键字的状态;跨链交易失败,第一节点将关键字的状态恢复到跨链交易前的状态,由此实现了跨链交易的持久性和一致性;而无论跨链交易成功与否,第一节点都将第一跨链管理合约上的关键字记录删除,从而之后第一节点上的其他跨链交易或者普通交易都不会受到此次跨链交易的干扰,由此实现了跨链交易的隔离性。
在一种示例性的实施方式中,第二节点在接收到第二指令后,先在第二跨链管理合约中查询是否存在跨链交易的关键字的记录;若第二跨链管理合约存在该关键字的记录,说明第二区块链还处于上一次跨链流程中,则向第二中继器发送第二子交易的第一执行结果,其中,第二子交易的第一执行结果指示第二子交易执行失败;若不存在该关键字的记录,说明第二区块链不处于跨链流程中,则执行第二子交易以得到该关键字的第二状态,并在该第二跨链管理合约中记录该关键字的第二状态,以及向第二中继器发送第二子交易的第二执行结果。应理解,在执行跨链交易之前,先去第二跨链管理合约中查询是否存在跨链交易的关键字的记录,在第二跨链管理合约中存在关键字的记录时,本次跨链交易中止或者直接执行失败,从而本次跨链交易不会干扰上一次跨链交易;在第二跨链管理合约中不存在关键字的记录时,执行第二子交易以得到该关键字的第二状态,并在该第二跨链管理合约中记录该关键字的第二状态,之后第二节点上的其他跨链交易或者普通交易都要中止或者直接执行失败,从而其他跨链交易或者普通交易不会干扰本次跨链交易,由此实现跨链交易隔离。
在一种示例性的实施方式中,第一中继器在确认了跨链交易的执行结果之后,会向第二中继器发送第三指令;第二中继器在接收到该第三指令后,会将该第三指令转发给第二节点;若跨链交易的执行结果指示跨链交易成功,第一中继器发送的第三指令用于指示跨链交易成功;若跨链交易的执行结果指示跨链交易失败,第一中继器发送的第三指令用于指示跨链交易失败。应理解,无论跨链交易成功与否,第一中继器都通过第三指令将跨链交易成功与否的情况告知第二节点,以便于第二节点针对跨链交易成功与否的不同情况执行相应的操作,使得确保跨链交易的持久性和一致性。需要说明的是,第二中继器在接收到来自第一中继器的该第三指令后,会对该第三指令进行数据格式转换,将其转换成第二节点可以识别的数据格式,再将进行数据格式转换之后的第三指令转发给第二节点。
在一种示例性的实施方式中,第一中继器在其可信执行环境内,采用第一中继器的私钥对第三指令进行签名,以得到第五签名数据;向第二中继器发送第五签名数据。应理解,由于第三指令是第一中继器签名过的,有利于第二中继器确定该第三指令是否是可信的,从而确保跨链流程是可信的。
在一种示例性的实施方式中,第二中继器保存有第三根证书,第二中继器接收到包含第三指令的第五签名数据和第一中继器的身份证书后,在其可信执行环境内,采用第三根证书验证第一中继器的身份证书,在验证通过后从第一中继器的身份证书中提取第一中继器的公钥,并采用第一中继器的公钥验签第五签名数据以确定第三指令是否可信,进而将该第三指令转发给第二节点,有利于确保跨链流程是可信的。此外,无论跨链交易成功与否,第一中继器都通过第三指令将跨链交易成功与否的情况通过第二中继器告知第二节点,以便于第二节点针对跨链交易成功与否的不同情况执行相应的操作,使得确保跨链交易的持久性和一致性。
在一种示例性的实施方式中,若第三指令指示跨链交易成功,第二节点则持久化关键字的第二状态,并删除第二跨链管理合约中记录的关键字的第二状态;若第三指令指示跨链交易失败,第二节点则将关键字的状态恢复到执行第二子交易前的状态,并删除第二跨链管理合约中记录的关键字的第二状态。应理解,跨链交易成功,第二节点持久化关键字的状态;跨链交易失败,第二节点将关键字的状态恢复到跨链交易前的状态,由此实现了跨链交易的持久性和一致性;而无论跨链交易成功与否,第二节点都将第二跨链管理合约上的关键字记录删除,从而之后第二节点上的其他跨链交易或者普通交易都不会受到此次跨链交易的干扰,由此实现了跨链交易的隔离性。
在一种示例性的实施方式中,第一中继器在其可信执行环境内,采用第一中继器的私钥对跨链交易的请求进行签名,以得到第一签名数据,然后将第一签名数据和第一中继器的身份证书一并发送给第二中继器,从而便于第二中继器采用该第一中继器的身份证书验签该第一签名数据以确定该跨链交易的请求是可信的,有利于第二中继器根据该跨链交易的请求指示第二节点执行相应的跨链指令,从而确保跨链流程可信。
在一种示例性的实施方式中,第二中继器保存有第三根证书,第二中继器接收包含跨链交易的请求的第一签名数据和第一中继器的身份证书后,在其可信执行环境内,采用第三根证书验证第一中继器的身份证书,在验证通过后从第一中继器的身份证书中提取第一中继器的公钥,并采用第一中继器的公钥验签第一签名数据以确定跨链交易的请求是否可信,有利于第二中继器根据该跨链交易的请求指示第二节点执行相应的跨链指令,从而确保跨链流程可信。
在一种示例性的实施方式中,第一节点在将第一子交易的执行结果发送给第一中继器时,采用第一节点的私钥对第一子交易的执行结果进行签名,以得到第二签名数据,然后将第二签名数据和第一节点的身份证书一并发送给第一中继器,以便第一中继器通过该第一节点的身份证书对该第二签名数据进行验签,使得第一中继器确定该第一子交易的执行结果是否是可信的,从而确保跨链交易可信。
在一种示例性的实施方式中,第一中继器保存有第一节点(也即第一区块链)的第一根证书,第一中继器接收到包含第一子交易的执行结果的第二签名数据和第一节点的身份证书后,在第一中继器的可信执行环境内,采用该第一根证书验证第一节点的身份证书,并在验证通过后从第一节点的身份证书中提取第一节点的公钥,以及采用第一节点的公钥验签第二签名数据以确定第一子交易的执行结果是否可信,从而确保跨链交易可信。
在一种示例性的实施方式中,第一中继器在其可信执行环境内,对第一子交易的执行结果进行验证以确定第一子交易是否正确执行;具体地,第一中继器的可信执行环境内保存有预置交易验证策略,可以采用该预置交易验证策略对第一子交易的执行结果进行验证,以确定第一子交易是否正确执行;从而可以确保第一节点(也即第一区块链)诚实的使用正确的跨链子交易参数调用了正确的智能合约的功能,防止第一节点(也即第一区块链)作恶或数据被恶意篡改,确保跨链流程可信。
在一种示例性的实施方式中,第二节点在将第二子交易的执行结果发送给第二中继器时,采用第二节点的私钥对第二子交易的执行结果进行签名,以得到第三签名数据,然后将第三签名数据和第二节点的身份证书一并发送给第二中继器,以便第二中继器通过该第二节点的身份证书对该第三签名数据进行验签,使得第二中继器确定该第二子交易的执行结果是否是可信的,从而确保跨链交易可信。
在一种示例性的实施方式中,第二中继器保存有第二根证书,第二中继器接收来自第二节点的第三签名数据和第二节点的身份证书后;在第二中继器的可信执行环境内,采用第二根证书验证第二节点的身份证书,并在验证通过后从第二节点的身份证书中提取第二节点的公钥,以及采用第二节点的公钥验签第三签名数据以确定第二子交易的执行结果是否可信;从而确保跨链交易可信。
在一种示例性的实施方式中,第二中继器在其可信执行环境内,对第二子交易的执行结果进行验证,以确定第二子交易是否正确执行。具体地,第二中继器的可信执行环境内保存有预置交易验证策略,可以采用该预置交易验证策略对第二子交易的执行结果进行验证,以确定第二子交易是否正确执行。
在一种示例性的实施方式中,第二中继器在其的可信执行环境内,采用第二中继器的私钥对第二子交易的执行结果进行签名,以得到第四签名数据;然后向第一中继器发送第四签名数据;由于第二子交易的执行结果是经过签名的,有利于第一中继器确定其是否可信。应理解,第二中继器在确定第二子交易的执行结果是否可信之后,会对该第二子交易的执行结果进行数据格式转换,将其转换成第一中继器可以识别的数据格式,再将进行数据格式转换之后的第二子交易的执行结果转发给第一中继器。
在一种示例性的实施方式中,第一中继器保存有第三根证书,第一中继器接收来自第二中继器的第四签名数据和第二中继器的身份证书后;在第一中继器的可信执行环境内,采用第三根证书验证第二中继器的身份证书,在验证通过后从第二中继器的身份证书中提取第二中继器的公钥,并采用第二中继器的公钥验签第四签名数据以确定第二子交易的执行结果是否可信。其中,作为一种可能的是实现方式,第一中继器在接收到来自第二中继器的第二子交易的执行结果后,也可以采用预置交易验证策略对第二子交易的执行结果进行进一步的验证。
在一种示例性的实施方式中,第一中继器用于:若第一子交易的执行结果指示第一子交易执行成功且第二子交易的执行结果指示第二子交易执行成功,则确定跨链交易成功;否则,确定跨链交易失败。应理解,若第一子交易的执行结果指示第一子交易执行成功且第二子交易的执行结果指示第二子交易执行成功,第一中继器则确定跨链交易成功;否则,第一中继器确定跨链交易失败,从而确保了跨链交易的原子性。
本申请实施例第二方面公开了一种跨链交易方法,应用于具备可信执行环境的第一中继器,该第一中继器对应第一区块链,该方法包括:第一中继器向第一节点发送用于指示执行第一子交易的第一指令,以及向第二中继器发送跨链交易的请求,其中,第一节点维护第一区块链,第二中继器对应第二区块链,跨链交易包括在第一区块链上执行的第一子交易和在第二区块链上执行的第二子交易;第一中继器接收来自第一节点的第一子交易的执行结果,以及接收来自第二中继器的第二子交易的执行结果;第一中继器接收到第一子交易的执行结果和第二子交易的执行结果后,在第一中继器的可信执行环境内,根据第一子交易的执行结果和第二子交易的执行结果确定跨链交易的执行结果。应理解,由于第一中继器具备可信执行环境,第一中继器在可信执行环境内确定跨链交易的执行结果是否是可信的,从而使得跨链交易流程是可信的。此外,第一中继器对应第一区块链,是指第一区块链所在的区块链网络包括多个节点,第一中继器是与这多个节点中的任意一个相连的中继器;第二中继器对应第二区块链,是指第二区块链所在的区块链网络包括另外多个节点,第二中继器是与这另外多个节点中的任意一个相连的中继器。其中,第一区块链与异构的第二区块链进行跨链交易时,第一中继器和第二中继器可以作为中继平台实现跨链,其中跨链数据发送至中继平台,由中继平台进行数据解析并转换成区块链可识别的消息格式,再将跨链指令和数据发送至区块链处理。
在一种示例性的实施方式中,方法还包括:第一中继器基于跨链交易的执行结果向第一节点发送第三指令;其中,若跨链交易的执行结果指示跨链交易成功,第三指令用于指示跨链交易成功;若跨链交易的执行结果指示跨链交易失败,第三指令用于指示跨链交易失败。应理解,无论跨链交易成功与否,第一中继器都通过第三指令将跨链交易成功与否的情况告知第一节点,以便于第一节点针对跨链交易成功与否的不同情况执行相应的操作,使得确保跨链交易的持久性和一致性。
在一种示例性的实施方式中,向第二中继器发送跨链交易的请求,包括:在第一中继器的可信执行环境内,采用第一中继器的私钥对跨链交易的请求进行签名,以得到第一签名数据;向第二中继器发送第一签名数据。应理解,由于第一中继器发给第二中继器的跨链交易的请求是在第一中继器的可信执行环境内进行过数据签名的,因此该第二中继器会验签该第一签名数据以确保该跨链交易的请求是否可信,从而可以确保跨链流程可信。进一步地,第一中继器可以将第一签名数据和第一中继器的身份证书一并发送给第二中继器,从而便于第二中继器采用该第一中继器的身份证书验签该第一签名数据以确定该跨链交易的请求是可信的,有利于第二中继器根据该跨链交易的请求指示第二节点执行相应的跨链指令,从而进一步确保跨链流程可信。
在一种示例性的实施方式中,第一中继器保存有第一根证书,第一子交易的执行结果承载于第二签名数据,接收到来自第一节点的第二签名数据和第一节点的身份证书之后,在第一中继器的可信执行环境内,采用第一根证书验证第一节点的身份证书,并在验证通过后从第一节点的身份证书中提取第一节点的公钥,以及采用第一节点的公钥验签第二签名数据以确定第二签名数据指示的第一子交易的执行结果是否可信。应理解,第一中继器保存有第一节点(也即第一区块链)的第一根证书,第一中继器接收到包含第一子交易的执行结果的第二签名数据和第一节点的身份证书后,在第一中继器的可信执行环境内,采用该第一根证书验证第一节点的身份证书,并在验证通过后从第一节点的身份证书中提取第一节点的公钥,以及采用第一节点的公钥验签第二签名数据以确定第一子交易的执行结果是否可信,从而确保跨链交易可信。需要说明的是,第一中继器接收第二签名数据和接收第一节点的身份证书可以是一个动作,也可以是两个动作;例如,一个消息同时携带第二签名数据和第一节点的身份证书,第一节点将该消息发送给第一中继器,第一中继器接收该消息,也即接收到了该第二签名数据和该第一节点的身份证书;或者,第一节点通过两个消息分别将第二签名数据和第一节点的身份证书发送给第一中继器;本申请对此不作具体限制。
在一种示例性的实施方式中,在接收来自第一节点的第一子交易的执行结果之后,方法还包括:在第一中继器的可信执行环境内,基于第一子交易的执行结果确定第一子交易是否正确执行。应理解,第一中继器在其可信执行环境内对第一子交易的执行结果进行验证,从而可以确保第一节点(也即第一区块链)诚实的使用正确的跨链子交易参数调用了正确的智能合约的功能,防止第一节点(也即第一区块链)作恶或数据被恶意篡改,确保跨链流程可信。
在一种示例性的实施方式中,第一中继器保存有第三根证书,第二子交易的执行结果承载于第四签名数据,接收到来自第二中继器的第四签名数据和第二中继器的身份证书之后;在第一中继器的可信执行环境内,采用第三根证书验证第二中继器的身份证书,在验证通过后从第二中继器的身份证书中提取第二中继器的公钥,并采用第二中继器的公钥验签第四签名数据以确定第四签名数据指示的第二子交易的执行结果是否可信。应理解,第一中继器保存有第二中继器的第三根证书,第一中继器接收到包含第二子交易的执行结果的第四签名数据和第二中继器的身份证书后,在第一中继器的可信执行环境内,采用该第三根证书验证第二中继器的身份证书,并在验证通过后从第二中继器的身份证书中提取第二中继器的公钥,以及采用第二中继器的公钥验签第四签名数据以确定第二子交易的执行结果是否可信,从而确保跨链交易可信。需要说明的是,第一中继器接收第四签名数据和接收第二中继器的身份证书可以是一个动作,也可以是两个动作;例如,一个消息携带同时第四签名数据和第二中继器的身份证书,第二中继器将该消息发送给第一中继器,第一中继器接收该消息,也即接收到了该第四签名数据和该第二中继器的身份证书;或者,第二中继器通过两个消息分别将第四签名数据和第二中继器的身份证书发送给第一中继器;本申请对此不作具体限制。
本申请实施例第三方面公开了一种跨链交易方法,应用于节点A,所述节点A维护区块链A,所述节点A包括跨链管理合约A,该跨链管理合约A可以记录关键字和关键字的状态,当跨链管理合约A中存在关键字的记录时,节点A上的其他跨链交易或者普通交易需要中止或者直接执行失败;节点A在接收到来自中继器A或节点C的用于指示执行子交易A的指令后,先在跨链管理合约A中查询是否存在跨链交易的关键字的记录;若跨链管理合约A存在该关键字的记录,说明区块链A还处于上一次跨链流程中,则向中继器A或节点C发送子交易A的第一执行结果,其中,子交易A的第一执行结果指示子交易A执行失败;若不存在该关键字的记录,说明区块链A不处于跨链流程中,则执行子交易A以得到该关键字的状态A,并在该跨链管理合约A中记录该关键字的状态A,以及向中继器A或节点C发送子交易A的第二执行结果。应理解,在执行跨链交易之前,先去跨链管理合约A中查询是否存在跨链交易的关键字的记录,在跨链管理合约A中存在关键字的记录时,本次跨链交易中止或者直接执行失败,从而本次跨链交易不会干扰上一次跨链交易;在跨链管理合约A中不存在关键字的记录时,执行子交易A以得到该关键字的状态A,并在该跨链管理合约A中记录该关键字的状态A,之后节点A上的其他跨链交易或者普通交易都要中止或者直接执行失败,从而其他跨链交易或者普通交易不会干扰本次跨链交易,由此实现跨链交易隔离。
在一种示例性的实施方式中,节点A接收来自中继器A或节点C的第三指令;其中,若所述第三指令指示所述跨链交易成功,则持久化关键字的状态A,并删除跨链管理合约A中记录的关键字的状态A;若所述第三指令指示所述跨链交易失败,则根据跨链管理合约A中记录的关键字的状态A,将该节点A中记录的关键字的状态恢复到执行子交易A前的状态,并删除跨链管理合约A中记录的关键字的状态A。应理解,跨链交易成功,节点A持久化关键字的状态;跨链交易失败,节点A将关键字的状态恢复到跨链交易前的状态,由此实现了跨链交易的持久性和一致性;而无论跨链交易成功与否,节点A都将跨链管理合约A上的关键字记录删除,从而之后的其他跨链交易或者普通交易都不会受到此次跨链交易的干扰,由此实现了跨链交易的隔离性。
本申请实施例第四方面公开了一种跨链交易装置,应用于具备可信执行环境的第一中继器,该第一中继器对应第一区块链,该装置包括:发送单元,用于向第一节点发送用于指示执行第一子交易的第一指令,以及向第二中继器发送跨链交易的请求,其中,第一节点维护第一区块链,第二中继器对应第二区块链,跨链交易包括在第一区块链上执行的第一子交易和在第二区块链上执行的第二子交易;接收单元,用于接收来自第一节点的第一子交易的执行结果,以及接收来自第二中继器的第二子交易的执行结果;确定单元,用于在第一中继器的可信执行环境内,根据第一子交易的执行结果和第二子交易的执行结果确定跨链交易的执行结果。
在一种示例性的实施方式中,发送单元,还用于:基于跨链交易的执行结果向第一节点发送第三指令;其中,若跨链交易的执行结果指示跨链交易成功,第三指令用于指示跨链交易成功;若跨链交易的执行结果指示跨链交易失败,第三指令用于指示跨链交易失败。
在一种示例性的实施方式中,发送单元,用于:在第一中继器的可信执行环境内,采用第一中继器的私钥对跨链交易的请求进行签名,以得到第一签名数据;向第二中继器发送第一签名数据。
在一种示例性的实施方式中,第一中继器保存有第一根证书,第一子交易的执行结果承载于第二签名数据,接收单元,还用于:接收来自第一节点的第一节点的身份证书;在第一中继器的可信执行环境内,采用第一根证书验证第一节点的身份证书,并在验证通过后从第一节点的身份证书中提取第一节点的公钥,以及采用第一节点的公钥验签第二签名数据以确定第二签名数据指示的第一子交易的执行结果是否可信。
在一种示例性的实施方式中,确定单元,还用于:在第一中继器的可信执行环境内,基于第一子交易的执行结果确定第一子交易是否正确执行。
在一种示例性的实施方式中,第一中继器保存有第三根证书,第二子交易的执行结果承载于第四签名数据,接收单元,还用于:接收来自第二中继器的第四签名数据和第二中继器的身份证书;在第一中继器的可信执行环境内,采用第三根证书验证第二中继器的身份证书,在验证通过后从第二中继器的身份证书中提取第二中继器的公钥,并采用第二中继器的公钥验签第四签名数据以确定第四签名数据指示的第二子交易的执行结果是否可信。
本申请实施例第五方面公开了一种跨链交易装置,应用于节点A,节点A维护区块链A,节点A包括跨链管理合约A,该装置包括:接收单元,用于接收来自中继器A或节点C的用于指示执行子交易A的指令,其中,子交易A为区块链A与区块链B进行跨链交易时,由区块链A执行的子交易;中继器A为与节点A连接的中继器;节点C为区块链C上的共识节点,区块链C为区块链A和区块链B的中继链;查询单元,用于在跨链管理合约A中查询是否存在跨链交易的关键字的记录;发送单元,用于若存在关键字的记录,则向中继器A或节点C发送子交易A的第一执行结果,其中,子交易A的第一执行结果指示子交易A执行失败;发送单元,还用于若不存在关键字的记录,则执行子交易A以得到关键字的状态A,并在跨链管理合约A中记录关键字的状态A,以及向中继器A或节点C发送子交易A的第二执行结果。
在一种示例性的实施方式中,接收单元,还用于:接收来自中继器A或节点C的第三指令;若第三指令指示跨链交易成功,则持久化关键字的状态A,并删除跨链管理合约A中记录的关键字的状态A;若第三指令指示跨链交易失败,则将关键字的状态恢复到执行子交易A前的状态,并删除跨链管理合约A中记录的关键字的状态A。
可以理解的是,由于方法实施例与装置实施例为相同技术构思的不同呈现形式,因此,本申请实施例第二方面的内容应同步适配于本申请实施例第四方面,本申请实施例第三方面的内容应同步适配于本申请实施例第五方面,此处不再赘述。
本申请实施例第六方面公开了一种具备可信执行环境的第一中继器,包括处理器、存储器、通信接口,以及一个或多个程序,上述一个或多个程序被存储在上述存储器中,并且被配置由上述处理器执行,上述程序包括用于执行如上述第二方面中任一项所述的方法中的步骤的指令。
本申请实施例第七方面公开了一种节点A,包括处理器、存储器、通信接口,以及一个或多个程序,上述一个或多个程序被存储在上述存储器中,并且被配置由上述处理器执行,上述程序包括用于执行如上述第三方面中任一项所述的方法中的步骤的指令。
本申请实施例第八方面公开了一种芯片,其特征在于,包括:处理器,用于从存储器中调用并运行计算机程序,使得安装有上述芯片的设备执行如上述第二方面或第三方面中任一项上述的方法。
本申请实施例第九方面公开了一种计算机可读存储介质,其存储用于电子数据交换的计算机程序,其中,上述计算机程序使得计算机执行如上述第二方面或第三方面中任一项所述的方法。
本申请实施例第十方面公开了一种计算机程序产品,上述计算机程序产品使得计算机执行如上述第二方面或第三方面中任一项所述的方法。
附图说明
以下对本申请实施例用到的附图进行介绍。
图1是本申请实施例提供的一种使用哈希时间锁定实现跨链的流程示意图;
图2是本申请实施例提供的一种中继链的拓扑示意图;
图3是本申请实施例提供的一种中继平台非可信的跨链交易示意图;
图4是本申请实施例提供的一种跨链交易隔离的示意图;
图5是本申请实施例提供的一种用于执行交易的跨区块链的系统的架构示意图;
图6是本申请实施例提供的一种中继器内部的跨链处理流程示意图;
图7是本申请实施例提供的另一种用于执行交易的跨区块链的系统的架构示意图;
图8是本申请实施例提供的一种跨链交易方法的流程示意图;
图9是本申请实施例提供的一种跨链交易方法的整体步骤示意图;
图10是本申请实施例提供的另一种跨链交易方法的整体步骤示意图;
图11是本申请实施例提供的又一种用于执行交易的跨区块链的系统的架构示意图;
图12是本申请实施例提供的另一种跨链交易方法的流程示意图;
图13是本申请实施例提供的又一种跨链交易方法的整体步骤示意图;
图14是本申请实施例提供的再一种用于执行交易的跨区块链的系统的架构示意图;
图15是本申请实施例提供的又一种跨链交易方法的流程示意图;
图16是本申请实施例提供的再一种跨链交易方法的整体步骤示意图;
图17是本申请实施例提供的再一种跨链交易方法的流程示意图;
图18是本申请实施例提供的一种跨链交易装置的结构示意图;
图19是本申请实施例提供的另一种跨链交易装置的结构示意图;
图20是本申请实施例提供的一种第一中继器的结构示意图;
图21是本申请实施例提供的一种节点A的结构示意图。
具体实施方式
下面结合本申请实施例中的附图对本申请实施例进行描述。
首先,对本申请中的部分用语进行解释说明,以便于本领域技术人员理解。
(1)富执行环境(Rich Execution Environment,REE):是操作系统及其上层的各种应用的执行环境,各种信息在互联互通的网络世界中运转。
(2)可信执行环境(Trusted Execution Environment,TEE):是基于ARM的TrustZone技术实现的,该技术在移动设备(包含智能手机、平板电脑、机顶盒、智能电视等)的主处理器上划出了一个安全区域,可以保证加载到该环境内部的代码和数据的安全性、机密性以及完整性;TEE提供的执行空间比常见的移动操作系统(如Linux、Android等)提供的执行空间具有更高级别的安全性。本申请所描述的可信执行环境包括但不限于ARMTrustZone、Intel SGX。
(3)区块链:借由密码学串接并保护内容的区块记录,其中每个区块包含了前一个区块的哈希值、时间戳和交易数据;使用区块链技术实现的分布式账本能让两方或多方有效记录交易,交易不可伪造且永久可查验。
(4)跨链:一种在价值守恒前提下,使得原本存储在某区块链上的资产转换成另一条链上的资产,从而实现价值流通的过程;广义上跨链不局限于资产转换,任何协调多条链,在多条链上产生影响的操作均可认为是跨链,本方案跨链流程也指的是广义概念。
(5)跨链交易:一笔交易需要多个区块链上的子交易共同生效来达成,该交易即为跨链交易;跨链交易对应的多个区块链上的子交易同时成功或同时失败;跨链需要通过跨链交易的执行来实现,也即跨链功能需要通过跨链交易的执行来实现。
(6)侧链:实质上不是特指某个区块链,而是指遵守侧链协议的所有区块链,该名词是相对于比特币主链来说的。
(7)侧链协议:是指可以让比特币安全地从比特币主链转移到其他区块链,又可以从其他区块链安全地返回比特币主链的一种协议。
(8)中继器:通过对数据信号的重新发送或转发实现两个网络的互连的设备即为中继器;跨链中的中继器可以将由一个区块链发来的数据转化为其他链可识别的数据结构,并通过调用区块链的API向区块链发送跨链指令,协调所有参与跨链交易的区块链。
(9)中继链:与中继器具有相同功能的区块链,用于实现多个区块链之间的互相连接。
其次,分析并提出本申请所要解决的技术问题。跨链的目的是建立资产价值和信息数据传输的通道,当前跨链技术的难点主要集中在以下3个方面:
(1)异构平台互通
随着区块链技术的发展和应用的落地,未来区块链生态系统必然是多链并存、互联互通的生态系统。互联互通不仅针对同一区块链平台上多条链之间,同样需要跨越异构平台实现不同区块链平台间的多条链互联互通。如何设计实现通用的跨链平台机制,使得其他异构区块链平台间能够尽可能少的修改底层技术以便捷、快速、安全的接入跨链平台是实现跨链技术首先需要解决的问题。
(2)跨链事务管理
一个完整的跨链交易包含若干参与的区块链系统上的若干个子交易,每个子交易在各自区块链系统中进行处理。所有的跨链子交易构成一个跨链事务,跨链平台需要对跨链事务进行管理,保证事务管理(ACID)的四大特性:原子性、一致性、隔离性和持久性。跨链事务原子性和一致性指一个跨链请求中的各跨链子交易需要全部成功或全部失败,没有其他中间状态;跨链事务隔离性即保证跨链事务之间及与其他普通交易之间互不影响互相隔离;跨链事务持久性指跨链事务一旦完成,各区块链需持久化相关交易和状态。
(3)跨链安全保障
跨链平台建立起异构区块链系统间的连接通道,需要进行数据解析和组装,可验证各异构平台上跨链子交易的交易状态,以及根据各子交易的状态决定下一步跨链动作。因此保证跨链平台的安全可信十分关键,若跨链平台被攻击仿冒,则整个跨链流程无效,甚至对各区块链平台带来致命攻击。
为了便于理解本申请实施例,进一步分析并提出本申请所具体要解决的技术问题。在现有技术中,关于异构区块链跨链技术,包括多种技术方案,以下示例性的列举如下常用的一种方案。
方案一:公证人机制
公证人机制是引入可信第三方充当公证人,公证人不断收集各区块链上的数据,还进行交易确认和验证。区块链1和区块链2不能互相信任,则引入区块链1和区块链2共同信任的第三方充当公证人作为中介,实现区块链1和区块链2的间接信任。公证人机制是跨链技术中较简单的一种,属于双向跨链,可以实现跨链资产交换及转移,容易操作。
使用公证人机制实现跨链流程,该方案是跨链技术中较为简单的一种,但其缺点是容易产生中心化,若公证人被篡改或伪冒,则可以随意操作跨链的各参与方,因为参与跨链的各区块链完全信任公证人。
方案二:哈希时间锁定
使用哈希时间锁定实现跨链流程,哈希锁定技术原理如下:区块链1和区块链2达成协议,协议将锁定资产1的1个比特币(BTC),在时刻T到来之前,如果区块链2能够向区块链1出示正确的R,使得R的哈希值等于事先约定的值Hash(R),区块链2就能获得这1BTC;如果在T时刻之后,区块链2仍未能提供正确的R,则这1BTC会被解锁并归还至区块链2。
请参阅图1,图1是使用哈希时间锁定实现跨链的流程示意图,具体为区块链1使用1BTC换取区块链2的1000以太币的过程:
(1)区块链1使用哈希时间锁定将自己的1比特币锁定,并将哈希值H告诉区块链2,区块链2在以太坊智能合约锁定1000以太币,合约声称谁能给出Hash(R)=H的R,就能获得这1000以太币。
(2)区块链1向区块链2提供R,由于从R计算到哈希值H很快,但从哈希值H反推到R很难,因此别人很难早于区块链1向区块链2提供正确的R,因此区块链1可以获得这1000以太币。
(3)区块链2提供了正确的R后,也可以从区块链1获得这1个比特币,至此,完成了区块链1和区块链2的资产转移过程。
哈希时间锁定适用于双方进行资产交换的场景,双方基于利益价值驱动,可能需要等待较长时间的确认期才能解锁对应链上的货币;其次,哈希时间锁定方案不适用于资产转移,如区块链1上的节点向区块链2上的节点进行单向转账,使其应用场景受限。
方案三:侧链/中继
相比于公证人机制,侧链/中继更为灵活,仅充当数据收集者的角色,目标链收到数据后自行验证,完成交易确认。侧链技术就是另外启动一条区块链,将主链上的资产转移到侧链上,反之也可以将侧链上的资产转回主链,主链和侧链即产生了跨链交易。比特币中继(BTCRelay)即采用侧链技术允许以太坊和比特币之间进行交易。如果侧链连接了2个或多个区块链,就称为中继链,COSMOS是典型的中继链,其拓扑如图2所示;其中,hub作为中继链,连接其他的区块链zone。中继采用中心辐射设计,不从属于某条主链,更倾向于是一个调度中心,负责数据传递。侧链和中继方式均是通过采集原链上的信息,建立跨链操作层,进行跨链事务的调度处理,以避免受到原链的过多技术限制。
侧链/中继也是目前采用较多的方式,其需要保证中继器的安全可信,以确保跨链流程可信;其次,需要保证跨链交易的原子性和隔离性。目前有使用中继链的方式在区块链上记录跨链事务状态,防止跨链交易被篡改,此方法需要将中继平台设计成区块链形式,且需要实现共识机制保证跨链指令可信,业务流程较复杂,效率低;跨链技术方案应尽可能少的修改异构区块链系统的内核代码,降低接入的复杂度。
综合上述现有技术的说明和不足之处,本申请采用中继的方式设计跨链流程,实现异构区块链网络间的互联互通,主要解决以下技术问题:
(1)跨链流程可信问题
采用中继的方式实现跨链,其中跨链数据发送至中继平台,由中继平台进行数据解析并转换成区块链可识别的消息格式,再将跨链指令和数据发送至区块链处理。中继平台是跨链流程中的关键部分,跨链动作指令由中继平台决定并发给各区块链,确保中继器的可信安全至关重要。
请参阅图3,图3是本申请实施例提供的一种中继平台非可信的跨链交易示意图,考虑如下场景:区块链1上的节点1给区块链2上的节点2进行转账,若节点2上的子交易失败,则此次跨链交易应失败;但是若中继平台被恶意攻击,中继平台仍向节点1发起持久化指令,则节点1的资产减少变成90,节点2的资产余额并没有增加,这在现实场景中是不可接受的。
(2)跨链交易隔离问题
若某跨链交易中对某关键字(key)进行写操作,该跨链交易还未结束,关键字的修改还未持久化时,又有另一笔普通交易或跨链交易需要对该关键字进行读或写操作,仍以上述图3所示的转账场景为例:
请参阅图4,图4是本申请实施例提供的一种跨链交易隔离的示意图,区块链2收到跨链交易指令,需要将节点2的资产增加10,在该跨链交易未完成时,同时有一笔将节点2的资产减10的其他交易,此时该笔其他交易不可直接执行,应该等待或直接失败。
(3)跨链交易原子性问题
跨链交易通常涉及到各参与的区块链上的跨链子交易,跨链技术需要保证这些跨链子交易同时成功或同时失败,只要有一个跨链子交易失败,则表示本次跨链交易失败,所有链都应恢复到跨链前的状态,即保证跨链交易原子性。
结合上述问题,本申请提供的技术方案主要如下:
(1)基于可信执行环境,实现中继器身份可信和跨链流程可信。
本申请使用可信执行环境进行跨链流程可信处理,跨链数据解析和指令分发在中继器的可信执行环境内进行,从而防止跨链事务状态被恶意篡改;其次,中继器的身份证书、根证书(RootCA)和公私钥等隐私数据密文存储,仅在可信硬件内部可解密获取。具体地,中继器加载有可信执行环境,中继器的身份证书、根证书和公私钥加密存储在富执行环境内,仅在可信执行环境内可解密,从而保证中继器身份不可被伪冒;中继器的可信执行环境内预置加载有交易验证策略,用于验证跨链子交易的执行结果;跨链事务状态在富执行环境内是加密存储的,仅在可信执行环境内可以解密,解密获取跨链事务状态明文之后再进行跨链流程处理,根据处理结果向富执行环境发送下一步跨链指令。
(2)通过部署跨链管理合约,实现交易隔离,保证交易原子性。
当跨链交易执行时,与该跨链交易有关的关键字需要锁住,后续其他与该关键字有关的普通交易或跨链交易均应感知到该关键字处于跨链流程,然后将当前交易等待或失败,即需要解决交易的隔离性问题。具体地,跨链管理合约中记录关键字的状态,其他跨链交易或普通交易调用区块链上的用户业务合约时,用户业务合约会先调用跨链管理合约查询相关的关键字的状态,以确定该关键字目前是否处于跨链流程中;若该关键字目前处于跨链流程,其他与该关键字有关的普通交易或跨链交易不可直接执行,应该等待或直接失败;当跨链交易结束时,删除跨链管理合约中关键字的状态,从而其他与该关键字有关的普通交易或跨链交易才可以执行,实现交易隔离。
中继器收到各跨链子交易结果后,根据跨链子交易结果确定跨链交易结果。具体地,如果有一个子交易失败,则判定本次跨链交易失败,向各参与的区块链发起最终确认交易,保证交易原子性。
下面结合具体实施方式对本申请提供的技术方案进行详细的介绍。
请参阅图5,图5是本申请实施例提供的一种用于执行交易的跨区块链的系统的架构示意图。图5所示的用于执行交易的跨区块链的系统包括第一中继器、第二中继器、第一节点、第二节点;其中,第一节点维护第一区块链,第二节点维护第二区块链,跨区块链的系统执行的跨链交易包括在第一区块链上执行的第一子交易和在第二区块链上执行的第二子交易;
第一中继器,用于向第一节点发送用于指示执行第一子交易的第一指令,以及向第二中继器发送跨链交易的请求;
第二中继器,用于根据接收到的跨链交易的请求,向第二节点发送用于指示执行第二子交易的第二指令;
第二中继器,还用于将来自第二节点的第二子交易的执行结果,向第一中继器发送;
第一中继器,还用于在第一中继器的可信执行环境内,根据来自第一节点的第一子交易的执行结果和来自第二中继器的第二子交易的执行结果确定跨链交易的执行结果。
应理解,跨链交易可以由客户端触发,也即跨链交易的请求来自客户端,第一中继器还用于向客户端发送跨链交易的执行结果。
应理解,一个区块链网络中包括多个节点,这多个节点共同维护该区块链,也即该区块链网络是以这多个节点为硬件架构,实现分布式数据存储、点对点传输、共识机制、加密算法等功能;对于第一区块链来说,第一节点是共同维护第一区块链的多个节点中的任意一个;对于第二区块链来说,第二节点是共同维护第二区块链的多个节点中的任意一个。
其中,第一区块链与第二区块链异构,第一中继器和第二中继器均具备可信执行环境和富执行环境。第一中继器调用第一SDK向第一节点发送第一指令,第一SDK可以为第一区块链的SDK;第二中继器调用第二SDK向第二节点发送第二指令,第二SDK可以为第二区块链的SDK。中继器存有的中继器的根证书,用于中继器之间通信时的校验;中继器还存有是区块链的根证书,用于中继器验证区块链发来的消息。
应理解,第一中继器存储有第一中继器的身份证书、第一中继器的公私钥、第一节点的第一根证书,第一中继器具备可信执行环境和富执行环境,第一中继器的身份证书、第一中继器的公私钥、第一节点的第一根证书是加密存储在第一中继器的富执行环境中的,仅在在第一中继器的可信执行环境中可见;或者,第一中继器的身份证书、第一中继器的公私钥、第一节点的第一根证书也可存储在第一中继器的可信执行环境中;第一中继器接收的来自第一节点的消息,在第一中继器的可信执行环境采用第一节点的第一根证书进行验签。例如,第一中继器可信执行环境存储第一区块链的根证书;在第一中继器可信执行环境内,采用第一区块链的根证书可验证第一子交易的执行结果是否可信,即验证第一区块链是否诚实的执行第一指令。其中,第一中继器的跨链业务处理逻辑在第一中继器的可信执行环境中部署,跨链事务状态仅在第一中继器的可信执行环境可解密,在第一中继器的可信执行环境根据跨链事务状态决定下一步跨链指令,组装跨链消息,保证跨链流程可信。
同理,第二中继器存储有第二中继器的身份证书、第二中继器的公私钥、第二节点的第二根证书,第二中继器具备可信执行环境和富执行环境,第二中继器的身份证书、第二中继器的公私钥、第二节点的第二根证书是加密存储在第二中继器的富执行环境中的,仅在在第二中继器的可信执行环境中可见;或者,第二中继器的身份证书、第二中继器的公私钥、第二节点的第二根证书是加密存储在第二中继器的可信执行环境中的;第二中继器接收的来自第二节点的消息,在第二中继器的可信执行环境采用第二节点的第二根证书进行验签。例如,第二中继器可信执行环境存储第二区块链的根证书;在第二中继器可信执行环境内,采用第二区块链的根证书可验证第二子交易的执行结果是否可信,即验证第二区块链是否诚实的执行第二指令。其中,第二中继器的跨链业务处理逻辑在第二中继器的可信执行环境中部署,跨链事务状态仅在第二中继器的可信执行环境可解密,在第二中继器的可信执行环境根据跨链事务状态决定下一步跨链指令,组装跨链消息,保证跨链流程可信。
其中,第一中继器和第二中继器接收到的消息是先传输到富执行环境中的,然后再传输到可信执行环境进行验签或者解密;第一中继器和第二中继器向外发送的消息,是先在可信执行环境进行签名,然后传输到富执行环境中,再从富执行环境中向外发送的。
此外,第一中继器和第二中继器保存有同一个第三根证书,该第三根证书是加密存储在第一中继器和第二中继器的富执行环境中的,仅在第一中继器和第二中继器的可信执行环境中可见;或者,该第三根证书也可以存储在第一中继器和第二中继器的可信执行环境中的;第一中继器接收到来自第二中继器的消息,在第一中继器的可信执行环境采用第一中继器存储的第三根证书进行验签;第二中继器接收到来自第一中继器的消息,在第二中继器的可信执行环境采用第二中继器存储的第三根证书进行验签。如此,可以保证中继器的身份可信。具体地,第一区块链与异构的第二区块链进行跨链交易时,第一节点维护第一区块链,第二节点维护第二区块链,与第一节点连接的第一中继器和与第二节点连接的第二中继器进行数据转发和处理,第一中继器和第二中继器的可行执行环境中保存有同一个第三根证书,基于该第三根证书分别生成第一中继器和第二中继器的公私钥,第一中继器与第二中继器之间传递的消息经私钥签名,对端使用该第三根证书验证公钥后,使用公钥验签,然后取出消息内容进行下一步的处理。
请一并参阅图6,图6是本申请实施例提供的一种中继器内部的跨链处理流程示意图,如图6所示,中继器的富执行环境仅能接触到加密后的跨链事务状态,也即中继器的富执行环境中的是跨链事务状态密文和子交易执行结果明文;跨链事务状态密文和子交易执行结果明文从中继器的富执行环境传输至中继器的可信执行环境,在中继器的可信执行环境内验证各子交易的执行结果是否可信;解密跨链事务状态和跨链数据,更新跨链事务状态,并执行预置好的跨链逻辑,确定下一步跨链指令,将更新后的跨链事务状态加密传输给中继器的富执行环境,同时将下一步跨链指令传输给中继器的富执行环境;中继器的富执行环境调用相关区块链的SDK执行下一步跨链指令。由于跨链事务状态在中继器的富执行环境中是加密存储的,跨链业务逻辑在中继器的可信执行环境中进行,中继器的富执行环境仅传递数据和调用区块链SDK执行中继器的可信执行环境发出的跨链指令,保证了跨链流程的可信。
其中,跨链事务状态指:对于某个跨链交易,中继平台需要几个区块链的子交易执行结果,已经有几个区块链返回了子交易执行结果,这个是加密的,在富执行环境中无法解密获取明文,其本质是一些跨链子交易的执行结果。
应理解,图6描述的中继器内部的跨链处理流程可以是第一中继器的内部,也可以是第二中继器的内部。
可以看出,在本实施例中,当需要在异构的第一区块链和第二区块链之间进行跨链交易时,第一中继器在获取到跨链交易的请求之后,向第一节点发送用于指示执行第一子交易的第一指令,以及向第二中继器发送跨链交易的请求;其中,第一中继器为与第一节点连接的中继器,第一节点维护第一区块链,第二中继器为与第二节点连接的中继器,第二节点维护第二区块链,跨区块链的系统执行的跨链交易包括在第一区块链上执行的第一子交易和在第二区块链上执行的第二子交易;第二中继器在接收到来自第一中继器的跨链交易的请求之后,会向第二节点发送用于指示执行第二子交易的第二指令;第一节点接收到第一指令之后,执行第一子交易,并向第一中继器发送第一子交易的执行结果;第二节点接收到第二指令之后,执行第二子交易,并向第二中继器发送第二子交易的执行结果;第二中继器在接收到第二子交易的执行结果之后,将第二子交易的执行结果发送给第一中继器;第一中继器在接收到第一子交易的执行结果和第二子交易的执行结果之后,在其可信执行环境内,根据第一子交易的执行结果和第二子交易的执行结果确定跨链交易的执行结果;应理解,由于中继器具备可信执行环境,中继器在可信执行环境内确定跨链交易的执行结果,该确定跨链交易的执行结果是否可信,从而使得跨链交易流程是可信的。
在一种示例性的实施方式中,第一中继器用于:在第一中继器的可信执行环境内,采用第一中继器的私钥对跨链交易的请求进行签名,以得到第一签名数据;向第二中继器发送第一签名数据。
可见,在本示例中,第一中继器在其可信执行环境内,采用第一中继器的私钥对跨链交易的请求进行签名,以得到第一签名数据,然后将第一签名数据和第一中继器的身份证书一并发送给第二中继器,从而便于第二中继器采用该第一中继器的身份证书验签该第一签名数据以确定该跨链交易的请求是可信的,有利于第二中继器根据该跨链交易的请求指示第二节点执行相应的跨链指令,从而确保跨链流程可信。
在一种示例性的实施方式中,第二中继器保存有第三根证书,第二中继器还用于:接收来自第一中继器的第一签名数据和第一中继器的身份证书;在第二中继器的可信执行环境内,采用第三根证书验证第一中继器的身份证书,在验证通过后从第一中继器的身份证书中提取第一中继器的公钥,并采用第一中继器的公钥验签第一签名数据以确定跨链交易的请求是否可信。
应理解,第二中继器在确定跨链交易的请求是否可信之后,向第二节点发送第二指令,也即调用第二区块链的SDK向第二区块链发送第二指令。
可见,在本示例中,第二中继器保存有第三根证书,第二中继器接收包含跨链交易的请求的第一签名数据和第一中继器的身份证书后,在其可信执行环境内,采用第三根证书验证第一中继器的身份证书,在验证通过后从第一中继器的身份证书中提取第一中继器的公钥,并采用第一中继器的公钥验签第一签名数据以确定跨链交易的请求是否可信,有利于第二中继器根据该跨链交易的请求指示第二节点执行相应的跨链指令,从而确保跨链流程可信。
应理解,第一节点接收到第一指令后,会执行第一指令,并在执行完第一指令后向第一中继器发送第一子交易的执行结果。
在一种示例性的实施方式中,第一节点用于:采用第一节点的私钥对第一子交易的执行结果进行签名,以得到第二签名数据;向第一中继器发送第二签名数据。
可见,在本示例中,第一节点在将第一子交易的执行结果发送给第一中继器时,采用第一节点的私钥对第一子交易的执行结果进行签名,以得到第二签名数据,然后将第二签名数据和第一节点的身份证书一并发送给第一中继器,以便第一中继器通过该第一节点的身份证书对该第二签名数据进行验签,使得第一中继器确定该第一子交易的执行结果是否是可信的,从而确保跨链交易可信。
在一种示例性的实施方式中,第一中继器保存有第一根证书,第一中继器还用于:接收来自第一节点的第二签名数据和第一节点的身份证书;在第一中继器的可信执行环境内,采用第一根证书验证第一节点的身份证书,并在验证通过后从第一节点的身份证书中提取第一节点的公钥,以及采用第一节点的公钥验签第二签名数据以确定第一子交易的执行结果是否可信。
可见,在本示例中,第一中继器保存有第一节点(也即第一区块链)的第一根证书,第一中继器接收到包含第一子交易的执行结果的第二签名数据和第一节点的身份证书后,在第一中继器的可信执行环境内,采用该第一根证书验证第一节点的身份证书,并在验证通过后从第一节点的身份证书中提取第一节点的公钥,以及采用第一节点的公钥验签第二签名数据以确定第一子交易的执行结果是否可信,从而确保跨链交易可信。
应理解,第一中继器在接收到来自第一节点的第一子交易的执行结果后,会验证第一子交易是否正确执行。
在一种示例性的实施方式中,第一中继器还用于:在第一中继器的可信执行环境内,对第一子交易的执行结果进行验证,以确定第一子交易是否正确执行。
举例来说,第一中继器的可信执行环境内保存有预置交易验证策略,可以采用该预置交易验证策略对第一子交易的执行结果进行验证,以确定第一子交易是否正确执行。
可见,在本示例中,第一中继器在其可信执行环境内,采用预置交易验证策略对第一子交易的执行结果进行验证以确定第一子交易是否正确执行,从而可以确保第一节点(也即第一区块链)诚实的使用正确的跨链子交易参数调用了正确的智能合约的功能,防止第一节点(也即第一区块链)作恶或数据被恶意篡改,确保跨链流程可信。
应理解,第二节点接收到第二指令后,会执行第二指令,并在执行完第二指令后向第二中继器发送第二子交易的执行结果。
在一种示例性的实施方式中,第二节点用于:采用第二节点的私钥对第二子交易的执行结果进行签名,以得到第三签名数据;向第二中继器发送第三签名数据。
在一种示例性的实施方式中,第二中继器保存有第二根证书,第二中继器还用于:接收来自第二节点的第三签名数据和第二节点的身份证书;在第二中继器的可信执行环境内,采用第二根证书验证第二节点的身份证书,并在验证通过后从第二节点的身份证书中提取第二节点的公钥,以及采用第二节点的公钥验签第三签名数据以确定第二子交易的执行结果是否可信。
应理解,第二中继器在接收到来自第二节点的第二子交易的执行结果后,会验证第二子交易是否正确执行,以及将第二子交易的执行结果转发给第一中继器。
在一种示例性的实施方式中,第二中继器还用于:在第二中继器的可信执行环境内,对第二子交易的执行结果进行验证,以确定第二子交易是否正确执行。
举例来说,第二中继器的可信执行环境内保存有预置交易验证策略,可以采用该预置交易验证策略对第二子交易的执行结果进行验证,以确定第二子交易是否正确执行。
在一种示例性的实施方式中,第二中继器还用于:在第二中继器的可信执行环境内,采用第二中继器的私钥对第二子交易的执行结果进行签名,以得到第四签名数据;向第一中继器发送第四签名数据。
在一种示例性的实施方式中,第一中继器保存有第三根证书,第一中继器还用于:接收来自第二中继器的第四签名数据和第二中继器的身份证书;在第一中继器的可信执行环境内,采用第三根证书验证第二中继器的身份证书,在验证通过后从第二中继器的身份证书中提取第二中继器的公钥,并采用第二中继器的公钥验签第四签名数据以确定第二子交易的执行结果是否可信。
其中,作为一种可能的是实现方式,第一中继器在接收到来自第二中继器的第二子交易的执行结果后,也可以采用预置交易验证策略对第二子交易的执行结果进行进一步的验证。
应理解,第一中继器在接收到第一子交易的执行结果和第二子交易的执行结果后,会根据第一子交易的执行结果和第二子交易的执行结果确定跨链交易的执行结果。
在一种示例性的实施方式中,第一中继器用于:若第一子交易的执行结果指示第一子交易执行成功且第二子交易的执行结果指示第二子交易执行成功,则确定跨链交易成功;否则,确定跨链交易失败。
可见,在本示例中,若第一子交易的执行结果指示第一子交易执行成功且第二子交易的执行结果指示第二子交易执行成功,第一中继器则确定跨链交易成功;否则,第一中继器确定跨链交易失败,从而确保了跨链交易的原子性。
应理解,各参与跨链的节点均可以部署有用户业务合约和跨链管理合约,其中,用户业务合约用于执行跨链的子交易,也即用于执行来自中继器的跨链指令,包括执行第一指令或者第二指令;跨链管理合约中记录跨链交易中的关键字的状态日志,当跨链交易执行完毕,再从跨链管理合约中删除。执行其他交易时会先查询跨链管理合约,校验交易中的关键字是否处于跨链状态,再决定后续操作,以此来实现交易的隔离;中继器收到各区块链的跨链子交易结果后,只要解析到有一个跨链子交易失败,则判定本次跨链交易失败,组装跨链交易失败、各区块链恢复状态的交易内容发给各区块链执行,保证交易原子性。具体地,通过部署跨链管理合约实现交易的高效隔离,跨链交易中的关键字记录在跨链管理合约中,跨链流程结束,中继器发送最终确认指令时,如果跨链有子交易执行失败,则重新写入关键字的初值;若跨链交易成功,则持久化跨链交易后的关键字的状态,最后将关键字的状态日志从跨链管理合约中删除,保证交易原子性;区块链在执行其他跨链交易或普通交易调用用户业务合约时,用户业务合约的业务逻辑会调用跨链管理合约获取该关键字,若该关键字处于跨链流程中,则该交易等待或直接返回失败,实现交易的隔离。
在一种示例性的实施方式中,第一节点用于,基于第一指令,在第一跨链管理合约中查询是否存在跨链交易的关键字的记录;若存在关键字的记录,则向第一中继器发送第一子交易的第一执行结果,其中,第一子交易的第一执行结果指示第一子交易执行失败;若不存在关键字的记录,则执行第一子交易以得到关键字的第一状态,并在第一跨链管理合约中记录关键字的第一状态,以及向第一中继器发送第一子交易的第二执行结果。
具体地,第一节点包括第一跨链管理合约和第一用户业务合约,第一节点通过调用第一用户业务合约来执行基于第一指令执行的操作。
其中,第一节点向第一中继器发送的第一子交易的第二执行结果可以是指示第一子交易执行成功,也可以是指示第一子交易执行失败。无论第一子交易的第二执行结果指示第一子交易执行成功与否,第一节点都会将该第一子交易的第二执行结果发送给第一中继器。此外,第一节点向第一中继器发送该第一子交易的第二执行结果前,第一节点是可以知晓该第一子交易的第二执行结果指示第一子交易执行成功与否。
可见,在本示例中,在执行跨链交易之前,先去第一跨链管理合约中查询是否存在跨链交易的关键字的记录,在第一跨链管理合约中存在关键字的记录时,本次跨链交易中止或者直接执行失败,从而本次跨链交易不会干扰上一次跨链交易;在第一跨链管理合约中不存在关键字的记录时,执行第一子交易以得到该关键字的第一状态,并在该第一跨链管理合约中记录该关键字的记录的第一状态,之后第一节点上的其他跨链交易或者普通交易都要中止或者直接执行失败,从而其他跨链交易或者普通交易不会干扰本次跨链交易,由此实现跨链交易隔离。
在一种示例性的实施方式中,第一中继器,还用于:向第一节点发送第三指令;其中,若跨链交易的执行结果指示跨链交易成功,第三指令用于指示跨链交易成功;若跨链交易的执行结果指示跨链交易失败,第三指令用于指示跨链交易失败。
可见,在本示例中,无论跨链交易成功与否,第一中继器都通过第三指令将跨链交易成功与否的情况告知第一节点,以便于第一节点针对跨链交易成功与否的不同情况执行相应的操作,使得确保跨链交易的持久性和一致性。
在一种示例性的实施方式中,第一节点,还用于:若第三指令指示跨链交易成功,则持久化关键字的第一状态,并删除第一跨链管理合约中记录的关键字的第一状态;若第三指令指示跨链交易失败,则将关键字的状态恢复到执行第一子交易前的状态,并删除第一跨链管理合约中记录的关键字的第一状态。
具体地,若第三指令指示跨链交易失败,可以根据第一跨链管理合约中记录的关键字的第一状态将第一区块链对应的关键字的状态恢复到执行第一子交易前的状态。
可见,在本示例中,跨链交易成功,第一节点持久化关键字的状态;跨链交易失败,第一节点将关键字的状态恢复到跨链交易前的状态,由此实现了跨链交易的持久性和一致性;而无论跨链交易成功与否,第一节点都将第一跨链管理合约上的关键字记录删除,从而之后第一节点上的其他跨链交易或者普通交易都不会受到此次跨链交易的干扰,由此实现了跨链交易的隔离性。
在一种示例性的实施方式中,第二节点用于,基于第二指令,在第二跨链管理合约中查询是否存在跨链交易的关键字的记录;若存在关键字的记录,则向第二中继器发送第二子交易的第一执行结果,其中,第二子交易的第一执行结果指示第二子交易执行失败;若不存在关键字的记录,则执行第二子交易以得到关键字的第二状态,并在第二跨链管理合约中记录关键字的第二状态,以及向第二中继器发送第二子交易的第二执行结果。
具体地,第二节点包括第二跨链管理合约和第二用户业务合约,第二节点通过调用第二用户业务合约来执行基于第二指令执行的操作。
可见,在本示例中,在执行跨链交易之前,先去第二跨链管理合约中查询是否存在跨链交易的关键字的记录,在第二跨链管理合约中存在关键字的记录时,本次跨链交易中止或者直接执行失败,从而本次跨链交易不会干扰上一次跨链交易;在第二跨链管理合约中不存在关键字的记录时,执行第二子交易以得到该关键字的第二状态,并在该第二跨链管理合约中记录该关键字的第二状态,之后第二节点上的其他跨链交易或者普通交易都要中止或者直接执行失败,从而其他跨链交易或者普通交易不会干扰本次跨链交易,由此实现跨链交易隔离。
在一种示例性的实施方式中,第二中继器,还用于:接收来自第一中继器的第三指令;向第二节点发送第三指令;其中,若跨链交易的执行结果指示跨链交易成功,第三指令用于指示跨链交易成功;若跨链交易的执行结果指示跨链交易失败,第三指令用于指示跨链交易失败。
在可能的实现方式中,第一中继器用于:在第一中继器的可信执行环境内,采用第一中继器的私钥对第三指令进行签名,以得到第五签名数据;向第二中继器发送第五签名数据。
应理解,由于第三指令是第一中继器签名过的,有利于第二中继器确定该第三指令是否是可信的,从而确保跨链流程是可信的。
在可能的实现方式中,第一中继器在其可信执行环境内,采用第一中继器的私钥对跨链交易的执行结果进行签名,以得到第五签名数据,然后将第五签名数据和第一中继器的身份证书一并发送给第二中继器;第二中继器根据跨链交易的执行结果生成第三指令,再将第三指令发送给第二节点。也即第二中继器发送给第二节点的第三指令可以是第一中继器生成的,也可以是第二中继器生成的,本申请对其不作具体限定。
在可能的实现方式中,第二中继器保存有第三根证书,第二中继器还用于:接收来自第一中继器的第五签名数据和第一中继器的身份证书;在第二中继器的可信执行环境内,采用第三根证书验证第一中继器的身份证书,在验证通过后从第一中继器的身份证书中提取第一中继器的公钥,并采用第一中继器的公钥验签第五签名数据以确定第三指令是否可信。
应理解,第二中继器保存有第三根证书,第二中继器接收到包含第三指令的第五签名数据和第一中继器的身份证书后,在其可信执行环境内,采用第三根证书验证第一中继器的身份证书,在验证通过后从第一中继器的身份证书中提取第一中继器的公钥,并采用第一中继器的公钥验签第五签名数据以确定第三指令是否可信,进而将该第三指令转发给第二节点,有利于确保跨链流程是可信的。
应理解,第二中继器在接收到来自第一中继器的第三指令后,或者第二中继器接收到来自第一中继器的跨链交易的执行结果并根据跨链交易的执行结果生成第三指令后,第二中继器会向第二节点发送该第三指令。
可见,无论跨链交易成功与否,第一中继器都通过第三指令将跨链交易成功与否的情况告知第二节点,以便于第二节点针对跨链交易成功与否的不同情况执行相应的操作,使得确保跨链交易的持久性和一致性。
在一种示例性的实施方式中,第二节点,还用于:若第三指令指示跨链交易成功,则持久化关键字的第二状态,并删除第二跨链管理合约中记录的关键字的第二状态;若第三指令指示跨链交易失败,则将关键字的状态恢复到执行第二子交易前的状态,并删除第二跨链管理合约中记录的关键字的第二状态。
具体地,若第三指令指示跨链交易失败,可以根据第二跨链管理合约中记录的关键字的第二状态将第二区块链对应的关键字的状态恢复到执行第二子交易前的状态。
可见,在本示例中,跨链交易成功,第二节点持久化关键字的状态;跨链交易失败,第二节点将关键字的状态恢复到跨链交易前的状态,由此实现了跨链交易的持久性和一致性;而无论跨链交易成功与否,第二节点都将第二跨链管理合约上的关键字记录删除,从而之后第二节点上的其他跨链交易或者普通交易都不会受到此次跨链交易的干扰,由此实现了跨链交易的隔离性。
请参阅图7,图7是本申请实施例提供的另一种用于执行交易的跨区块链的系统的架构示意图。图7所示的用于执行交易的跨区块链的系统包括第一中继器、第二中继器、第一节点、第二节点;其中,第一节点维护第一区块链,第二节点维护第二区块链,跨区块链的系统执行的跨链交易包括在第一区块链上执行的第一子交易和在第二区块链上执行的第二子交易;
第一中继器,用于向第一节点发送用于指示执行第一子交易的第一指令,以及向第二中继器发送跨链交易的请求;
第二中继器,用于根据接收到的跨链交易的请求,向第二节点发送用于指示执行第二子交易的第二指令;
第二中继器,还用于将来自第二节点的第二子交易的执行结果,向第一中继器发送;
第一中继器,还用于在第一中继器的可信执行环境内,根据来自第一节点的第一子交易的执行结果和来自第二中继器的第二子交易的执行结果确定跨链交易的执行结果。
应理解,第一区块链和第二区块链异构。
其中,为保证跨链交易隔离性,除了使用跨链管理合约之外,还可以使用事务的两阶段提交接口实现。上述中继器均具备可信执行环境,跨链流程仍在中继器的可信执行环境内执行,在中继器的富执行环境根据来自中继器的可信执行环境的跨链指令调用参与跨链的区块链的SDK时,参与跨链的区块链需要实现事务的两阶段提交的接口,实现交易的预提交和确认或回退。
如图7所示,上述节点包括区块链的预提交接口Prepare()、确认接口Commit()和回退接口Rollback(),其中,预提交接口Prepare()实现交易预提交功能,确认接口Commit()和回退接口Rollback()实现交易确认。具体地,中继器首先调用区块链的预提交接口Prepare()提交执行子交易的指令;中继器在接收到各跨链子交易的执行结果后,确定跨链交易的执行结果;若所有跨链子交易执行成功,则调用区块链的确认接口Commit()进行跨链后的状态持久化,表示本次跨链交易成功;若有一个跨链子交易执行失败,则调用区块链的回退接口Rollback()执行交易状态回退,表示本次跨链交易失败。
在一种示例性的实施方式中,第一中继器,用于调用第一预提交接口向第一节点发送第一指令;第一节点,用于执行第一子交易以得到跨链交易的关键字的第一状态,并向第一中继器发送第一子交易的执行结果。
其中,第一预提交接口也即第一区块链的预提交接口Prepare()。
可见,在本示例中,中继器调用事务的两阶段提交接口中的第一阶段提交接口向节点发送跨链交易的指令,也即第一中继器调用的第一预提交接口向第一节点发送第一指令;第一节点执行第一子交易以得到跨链交易的关键字的第一状态,并向第一中继器返回第一子交易的执行结果。应理解,由于事务的两阶段提交接口是在现有区块链上新增的独立接口,第一预提交接口与区块链的普通的发交易接口不同,因此调用第一预提交接口向第一节点发送跨链的第一指令不会干扰到第一区块链上的普通交易,实现跨链交易隔离。
在一种示例性的实施方式中,第一中继器还用于:若跨链交易的执行结果指示跨链交易成功,则调用第一确认接口向第一节点发送第三指令,其中,第三指令用于指示跨链交易成功;若跨链交易的执行结果指示跨链交易失败,则调用第一回退接口向第一节点发送第三指令,其中,第三指令用于指示跨链交易失败;第一节点还用于:若第三指令指示跨链交易成功,则持久化关键字的第一状态;若第三指令指示跨链交易失败,则将关键字的状态恢复到执行第一子交易前的状态。
其中,第一确认接口也即第一区块链的确认接口Commit(),第一回退接口也即第一区块链的回退接口Rollback()。
可见,在本示例中,中继器调用事务的两阶段提交接口中的第二阶段提交接口向节点发送跨链交易的指令,也即若跨链交易成功,第一中继器则调用第一确认接口向第一节点发送第三指令,其中,第三指令用于指示跨链交易成功;若跨链交易失败,第一中继器则调用第一回退接口向第一节点发送第三指令,其中,第三指令用于指示跨链交易成功;若第三指令指示跨链交易成功,第一节点则持久化关键字的第一状态;若第三指令指示跨链交易失败,第一节点则将关键字的状态恢复到执行第一子交易前的状态。应理解,由于事务的两阶段提交接口是在现有区块链上新增的独立接口,第一确认接口或第一回退接口与区块链的普通的发交易接口不同,因此调用第一确认接口或第一回退接口发送跨链的第三指令不会干扰到第一区块链上的普通交易,实现跨链交易隔离。
在一种示例性的实施方式中,第二中继器,用于调用第二预提交接口向第二节点发送第二指令;第二节点,用于指示执行第二子交易以得到跨链交易的关键字的第二状态,并向第二中继器发送第二子交易的执行结果。
其中,第二预提交接口也即第二区块链的预提交接口Prepare()。
可见,在本示例中,中继器调用事务的两阶段提交接口中的第一阶段提交接口向节点发送跨链交易的指令,也即第二中继器调用的第二预提交接口向第二节点发送第二指令;第二节点执行第二子交易以得到跨链交易的关键字的第二状态,并向第二中继器返回第二子交易的执行结果。应理解,由于事务的两阶段提交接口是在现有区块链上新增的独立接口,第二预提交接口与第二区块链的普通的发交易接口不同,因此调用第二预提交接口向第二节点发送跨链的第二指令不会干扰到第二区块链上的普通交易,有利于实现跨链交易隔离。
在一种示例性的实施方式中,第一中继器还用于:在第一中继器的可信执行环境内,采用第一中继器的私钥对跨链交易的执行结果进行签名,以得到第六签名数据;向第二中继器发送第六签名数据。
可见,在本示例中,第一中继器在其可信执行环境内,采用第一中继器的私钥对跨链交易的执行结果进行签名,以得到第六签名数据,然后将第六签名数据和第一中继器的身份证书一并发送给第二中继器,以便第二中继器通过该第一中继器的身份证书对该第六签名数据进行验签,使得第一中继器确定该跨链交易的执行结果是否是可信的,有利于第二中继器根据该跨链交易的执行结果指示第二节点执行相应的跨链指令,从而确保跨链流程可信。
应理解,第一中继器和第二中继器保存有同一个第三根证书,该第三根证书是加密存储在第一中继器和第二中继器的富执行环境中的,仅在第一中继器和第二中继器的可信执行环境中可见;或者,该第三根证书也可以存储在第一中继器和第二中继器的可信执行环境中的;第一中继器接收到来自第二中继器的消息,在第一中继器的可信执行环境采用第一中继器存储的第三根证书进行验签;第二中继器接收到来自第一中继器的消息,在第二中继器的可信执行环境采用第二中继器存储的第三根证书进行验签。如此,可以保证中继器的身份可信。
在一种示例性的实施方式中,第二中继器保存有第三根证书,第二中继器还用于:接收来自第一中继器的第六签名数据和第一中继器的身份证书;在第二中继器的可信执行环境内,采用第三根证书验证第一中继器的身份证书,在验证通过后从第一中继器的身份证书中提取第一中继器的公钥,并采用第一中继器的公钥验签第六签名数据以确定跨链交易的执行结果是否可信。
可见,在本示例中,第二中继器保存有第三根证书,第二中继器接收到包含跨链交易的执行结果的第六签名数据和第一中继器的身份证书后,在其可信执行环境内,采用第三根证书验证第一中继器的身份证书,在验证通过后从第一中继器的身份证书中提取第一中继器的公钥,并采用第一中继器的公钥验签第六签名数据以确定该跨链交易的执行结果是否可信,有利于第二中继器根据该跨链交易的执行结果指示第二节点执行相应的跨链指令,从而确保跨链流程可信。
在一种示例性的实施方式中,第二中继器还用于:若跨链交易的执行结果指示跨链交易成功,则调用第二确认接口向第二节点发送第三指令,其中,第三指令用于指示跨链交易成功;若跨链交易的执行结果指示跨链交易失败,则调用第二回退接口向第二节点发送第三指令,其中,第三指令用于指示跨链交易失败;第二节点还用于:若第三指令指示跨链交易成功,则持久化关键字的第二状态;若第三指令指示跨链交易失败,则将关键字的状态恢复到执行第二子交易前的状态。
其中,第一确认接口也即第一区块链的确认接口Commit(),第一回退接口也即第一区块链的回退接口Rollback()。
可见,在本示例中,中继器调用事务的两阶段提交接口中的第二阶段提交接口向节点发送跨链交易的指令,也即若跨链交易成功,第二中继器则调用第二确认接口向第二节点发送第三指令,此种情况下第三指令用于指示跨链交易成功;若跨链交易失败,第二中继器则调用第二回退接口向第二节点发送第三指令,此种情况下第三指令用于指示跨链交易失败;若第三指令指示跨链交易成功,第二节点则持久化关键字的第二状态;若第三指令指示跨链交易失败,第二节点则将关键字的状态恢复到执行第二子交易前的状态。应理解,由于事务的两阶段提交接口是在现有区块链上新增的独立接口,第二确认接口或第二回退接口与第二区块链的普通的发交易接口不同,因此调用第二确认接口或第二回退接口发送跨链的第三指令不会干扰到第二区块链上的普通交易,有利于实现跨链交易隔离。
应理解,图7所示的用于执行交易的跨区块链的系统与图5所示的用于执行交易的跨区块链的系统相比,区别在于:使用事务的两阶段提交接口代替跨链管理合约实现跨链交易隔离性。因此,图7所示的用于执行交易的跨区块链的系统与图5所示的用于执行交易的跨区块链的系统的相同之处,请参阅图5所示的实施例对应的描述,此处不再赘述。
请参见图8,图8是本申请实施例提供的一种跨链交易方法的流程示意图,该方法可以应用于图5或图7所描述的用于执行交易的跨区块链的系统,该方法包括:
步骤801、第一中继器向第一节点发送用于指示执行第一子交易的第一指令,以及向第二中继器发送跨链交易的请求,其中,第一节点维护第一区块链,第二中继器对应第二区块链,跨链交易包括在第一区块链上执行的第一子交易和在第二区块链上执行的第二子交易。
其中,第一中继器和第二中继器均具备可信执行环境。第一中继器向第一节点发送第一指令,也即调用第一区块链的SDK向第一区块链发送第一指令。此外,第一区块链和第二区块链异构。
应理解,第一中继器和第二中继器保存有同一个第三根证书,该第三根证书是加密存储在第一中继器和第二中继器的富执行环境中的,仅在第一中继器和第二中继器的可信执行环境中可见;或者,该第三根证书也可以存储在第一中继器和第二中继器的可信执行环境中的;第一中继器接收到来自第二中继器的消息,在第一中继器的可信执行环境采用第一中继器存储的第三根证书进行验签;第二中继器接收到来自第一中继器的消息,在第二中继器的可信执行环境采用第二中继器存储的第三根证书进行验签。如此,可以保证中继器的身份可信。
在一种示例性的实施方式中,向第二中继器发送跨链交易的请求,包括:在第一中继器的可信执行环境内,采用第一中继器的私钥对跨链交易的请求进行签名,以得到第一签名数据;向第二中继器发送第一签名数据。
步骤802、第二中继器接收来自第一中继器的跨链交易的请求。
在一种示例性的实施方式中,跨链交易的请求承载于第一签名数据,该方法还包括:第二中继器接收来自第一中继器的第一中继器的身份证书;第二中继器在第二中继器的可信执行环境内,采用第三根证书验证第一中继器的身份证书,在验证通过后从第一中继器的身份证书中提取第一中继器的公钥,并采用第一中继器的公钥验签第一签名数据以确定第一签名数据指示的跨链交易的请求是否可信。
需要说明的是,第二中继器接收第一签名数据和接收第一中继器的身份证书可以是一个动作,也可以是两个动作;例如,一个消息携带同时第一签名数据和第一中继器的身份证书,第一中继器将该消息发送给第二中继器,第二中继器接收该消息,也即接收到了该第一签名数据和该第一中继器的身份证书;或者,第一中继器通过两个消息分别将第一签名数据和第一中继器的身份证书发送给第二中继器;本申请对此不作具体限制。
步骤803、第二中继器向第二节点发送用于指示执行第二子交易的第二指令,其中,第二节点维护第二区块链。
应理解,第二中继器在确定跨链交易的请求是否可信之后,向第二节点发送第二指令,也即调用第二区块链的SDK向第二区块链发送第二指令。
步骤804、第二中继器接收来自第二节点的第二子交易的执行结果。
其中,第二中继器存储有第二节点的第二根证书,第二中继器接收的来自第二节点的消息,在第二中继器的可信执行环境采用第二节点的第二根证书进行验签。例如,第二中继器可信执行环境存储第二区块链的根证书;在第二中继器可信执行环境内,采用第二区块链的根证书可验证第二子交易的执行结果是否可信,即验证第二区块链是否诚实的执行第二指令。
在一种示例性的实施方式中,第二中继器保存有第二根证书,第二子交易的执行结果承载于第三签名数据,该方法还包括:第二中继器接收来自第二节点的第二节点的身份证书,其中,第三签名数据由第二节点采用第二节点的私钥对第二子交易的执行结果进行签名得到;第二中继器在第二中继器的可信执行环境内,采用第二根证书验证第二节点的身份证书,并在验证通过后从第二节点的身份证书中提取第二节点的公钥,以及采用第二节点的公钥验签第三签名数据以确定第三签名数据指示的第二子交易的执行结果是否可信。
需要说明的是,第二中继器接收第三签名数据和接收第二节点的身份证书可以是一个动作,也可以是两个动作;例如,一个消息携带同时第三签名数据和第二节点的身份证书,第二节点将该消息发送给第二中继器,第二中继器接收该消息,也即接收到了该第三签名数据和该第二节点的身份证书;或者,第二节点通过两个消息分别将第三签名数据和第二节点的身份证书发送给第二中继器;本申请对此不作具体限制。
应理解,第二中继器在接收到来自第二节点的第二子交易的执行结果后,会验证第二子交易是否正确执行,以及将第二子交易的执行结果转发给第一中继器。
在一种示例性的实施方式中,该方法还包括:第二中继器在第二中继器的可信执行环境内,对第二子交易的执行结果进行验证,以确定第二子交易是否正确执行。
步骤805、第二中继器向第一中继器发送第二子交易的执行结果。
在一种示例性的实施方式中,向第一中继器发送第二子交易的执行结果,包括:在第二中继器的可信执行环境内,采用第二中继器的私钥对第二子交易的执行结果进行签名,以得到第四签名数据;向第一中继器发送第四签名数据。
步骤806、第一中继器接收来自第一节点的第一子交易的执行结果,以及接收来自第二中继器的第二子交易的执行结果。
其中,第一中继器存储有第一节点的第一根证书,第一中继器接收的来自第一节点的消息,在第一中继器的可信执行环境采用第一节点的第一根证书进行验签。例如,第一中继器可信执行环境存储第一区块链的根证书;在第一中继器可信执行环境内,采用第一区块链的根证书可验证第一子交易的执行结果是否可信,即验证第一区块链是否诚实的执行第一指令。
在一种示例性的实施方式中,第一中继器保存有第一根证书,第一子交易的执行结果承载于第二签名数据,该方法还包括:第一中继器接收来自第一节点的第一节点的身份证书,其中,第二签名数据由第一节点采用第一节点的私钥对第一子交易的执行结果进行签名得到;第一中继器在第一中继器的可信执行环境内,采用第一根证书验证第一节点的身份证书,并在验证通过后从第一节点的身份证书中提取第一节点的公钥,以及采用第一节点的公钥验签第二签名数据以确定第二签名数据指示的第一子交易的执行结果是否可信。
需要说明的是,第一中继器接收第二签名数据和接收第一节点的身份证书可以是一个动作,也可以是两个动作;例如,一个消息同时携带第二签名数据和第一节点的身份证书,第一节点将该消息发送给第一中继器,第一中继器接收该消息,也即接收到了该第二签名数据和该第一节点的身份证书;或者,第一节点通过两个消息分别将第二签名数据和第一节点的身份证书发送给第一中继器;本申请对此不作具体限制。
在一种示例性的实施方式中,在接收来自第一节点的第一子交易的执行结果之后,该方法还包括:在第一中继器的可信执行环境内,对第一子交易的执行结果进行验证,以确定第一子交易是否正确执行。
具体地,第一中继器收到第一区块链上跨链的第一子交易的执行结果后,通过其可信执行环境中存储的第一区块链的第一根证书验证区块链组织的公钥,再使用公钥验签,验签成功后,解析数据获取第一子交易相关内容进行验证,验证后将第一子交易执行结果加密保存。其中,交易内容中可包含执行的合约信息和参数信息等,验证区块链是否调用了正确的合约使用正确的参数执行了正确的函数功能,保证交易结果的可信性,防止区块链作恶或数据被篡改。
在一种示例性的实施方式中,第一中继器保存有第三根证书,第二子交易的执行结果承载于第四签名数据,该方法还包括:第一中继器接收来自第二中继器的第二中继器的身份证书,其中,第四签名数据由第二中继器在第二中继器的可信执行环境内,采用第二中继器的私钥对第二子交易的执行结果进行签名得到;第一中继器在第一中继器的可信执行环境内,采用第三根证书验证第二中继器的身份证书,在验证通过后从第二中继器的身份证书中提取第二中继器的公钥,并采用第二中继器的公钥验签第四签名数据以确定第四签名数据指示的第二子交易的执行结果是否可信。
具体地,第一中继器中在其可信执行环境根据第三根证书验证第二中继器的公钥,验证通过后再使用第二中继器的公钥验签,验签通过后,解析第二子交易的交易内容,将第二子交易的执行结果加密存储。
需要说明的是,第一中继器接收第四签名数据和接收第二中继器的身份证书可以是一个动作,也可以是两个动作;例如,一个消息携带同时第四签名数据和第二中继器的身份证书,第二中继器将该消息发送给第一中继器,第一中继器接收该消息,也即接收到了该第四签名数据和该第二中继器的身份证书;或者,第二中继器通过两个消息分别将第四签名数据和第二中继器的身份证书发送给第一中继器;本申请对此不作具体限制。
其中,作为一种可能的是实现方式,第一中继器在接收到来自第二中继器的第二子交易的执行结果后,也可以对第二子交易的执行结果进行进一步的验证。
步骤807、第一中继器在第一中继器的可信执行环境内,根据第一子交易的执行结果和第二子交易的执行结果确定跨链交易的执行结果。
在一种示例性的实施方式中,根据第一子交易的执行结果和第二子交易的执行结果确定跨链交易的执行结果,包括:若第一子交易的执行结果指示第一子交易执行成功且第二子交易的执行结果指示第二子交易执行成功,则确定跨链交易成功;否则,确定跨链交易失败。
可以看出,在本实施例中,当需要在异构的第一区块链和第二区块链之间进行跨链交易时,第一中继器在获取到跨链交易的请求之后,向第一节点发送用于指示执行第一子交易的第一指令,以及向第二中继器发送跨链交易的请求;其中,第一中继器为与第一节点连接的中继器,第一节点维护第一区块链,第二中继器为与第二节点连接的中继器,第二节点维护第二区块链,跨区块链的系统执行的跨链交易包括在第一区块链上执行的第一子交易和在第二区块链上执行的第二子交易;第二中继器在接收到来自第一中继器的跨链交易的请求之后,会向第二节点发送用于指示执行第二子交易的第二指令;第一节点接收到第一指令之后,执行第一子交易,并向第一中继器发送第一子交易的执行结果;第二节点接收到第二指令之后,执行第二子交易,并向第二中继器发送第二子交易的执行结果;第二中继器在接收到第二子交易的执行结果之后,将第二子交易的执行结果发送给第一中继器;第一中继器在接收到第一子交易的执行结果和第二子交易的执行结果之后,在其可信执行环境内,根据第一子交易的执行结果和第二子交易的执行结果确定跨链交易的执行结果;应理解,由于中继器具备可信执行环境,中继器在可信执行环境内确定跨链交易的执行结果,该确定跨链交易的执行结果是否可信,从而使得跨链交易流程是可信的。
当该跨链交易方法应用于图5所示的用于执行交易的跨区块链的系统时,第一节点包括第一跨链管理合约和第一用户业务合约,第二节点包括第二跨链管理合约和第二用户业务合约,第一节点通过第一跨链管理合约实现跨链交易隔离性,第二节点通过第二跨链管理合约实现跨链交易隔离性。具体描述如下。
应理解,第一节点在接收到第一指令后,可以基于第一指令,在第一跨链管理合约中查询是否存在跨链交易的关键字的记录;若存在关键字的记录,则向第一中继器发送第一子交易的第一执行结果,其中,第一子交易的第一执行结果指示第一子交易执行失败;若不存在关键字的记录,则执行第一子交易以得到关键字的第一状态,并在第一跨链管理合约中记录关键字的第一状态,以及向第一中继器发送第一子交易的第二执行结果。具体地,第一节点通过调用第一用户业务合约来执行基于第一指令执行的操作。
在一种示例性的实施方式中,该方法还包括:第一中继器向第一节点发送第三指令;其中,若跨链交易的执行结果指示跨链交易成功,第三指令用于指示跨链交易成功;若跨链交易的执行结果指示跨链交易失败,第三指令用于指示跨链交易失败。
应理解,若第三指令指示跨链交易成功,第一节点在接收到第三指令后,会持久化关键字的第一状态,并删除第一跨链管理合约中记录的关键字的第一状态;若第三指令指示跨链交易失败,第一节点在接收到第三指令后,会将关键字的状态恢复到执行第一子交易前的状态,并删除第一跨链管理合约中记录的关键字的第一状态。
可见,在本示例中,无论跨链交易成功与否,第一中继器都通过第三指令将跨链交易成功与否的情况告知第一节点,以便于第一节点针对跨链交易成功与否的不同情况执行相应的操作,使得确保跨链交易的持久性和一致性。
应理解,第二节点接收到第二指令后,可以基于第二指令,在第二跨链管理合约中查询是否存在跨链交易的关键字的记录;若存在关键字的记录,则向第二中继器发送第二子交易的第一执行结果,其中,第二子交易的第一执行结果指示第二子交易执行失败;若不存在关键字的记录,则执行第二子交易以得到关键字的第二状态,并在第二跨链管理合约中记录关键字的第二状态,以及向第二中继器发送第二子交易的第二执行结果。具体地,第二节点通过调用第二用户业务合约来执行基于第二指令执行的操作。
在一种示例性的实施方式中,该方法还包括:第二中继器接收来自第一中继器的第三指令;第二中继器向第二节点发送第三指令;其中,若跨链交易的执行结果指示跨链交易成功,第三指令用于指示跨链交易成功;若跨链交易的执行结果指示跨链交易失败,第三指令用于指示跨链交易失败。
在可能的实现方式中,该方法还包括:第一中继器在第一中继器的可信执行环境内,采用第一中继器的私钥对第三指令进行签名,以得到第五签名数据;第一中继器向第二中继器发送第五签名数据。
应理解,由于第三指令是第一中继器签名过的,有利于第二中继器确定该第三指令是否是可信的,从而确保跨链流程是可信的。
在可能的实现方式中,第二中继器保存有第三根证书,第三指令承载于第五签名数据,该方法还包括:第二中继器接收来自第一中继器的第一中继器的身份证书;第二中继器在第二中继器的可信执行环境内,采用第三根证书验证第一中继器的身份证书,在验证通过后从第一中继器的身份证书中提取第一中继器的公钥,并采用第一中继器的公钥验签第五签名数据以确定第五签名数据指示的第三指令是否可信。
需要说明的是,第二中继器接收第五签名数据和接收第一中继器的身份证书可以是一个动作,也可以是两个动作;例如,一个消息携带同时第五签名数据和第一中继器的身份证书,第一中继器将该消息发送给第二中继器,第二中继器接收该消息,也即接收到了该第五签名数据和该第一中继器的身份证书;或者,第一中继器通过两个消息分别将第五签名数据和第一中继器的身份证书发送给第二中继器;本申请对此不作具体限制。
应理解,第二中继器保存有第三根证书,第二中继器接收到包含第三指令的第五签名数据和第一中继器的身份证书后,对第五签名数据进行验签,可以确定第三指令是否可信,进而将该第三指令转发给第二节点,有利于确保跨链流程是可信的。
应理解,若第三指令指示跨链交易成功,第二节点在接收到第三指令后,会持久化关键字的第二状态,并删除第二跨链管理合约中记录的关键字的第二状态;若第三指令指示跨链交易失败,第二节点在接收到第三指令后,会将关键字的状态恢复到执行第二子交易前的状态,并删除第二跨链管理合约中记录的关键字的第二状态。
可见,无论跨链交易成功与否,第一中继器都通过第三指令将跨链交易成功与否的情况告知第二节点,以便于第二节点针对跨链交易成功与否的不同情况执行相应的操作,使得确保跨链交易的持久性和一致性。
请一并参阅图9,图9是本申请实施例提供的一种跨链交易方法的整体步骤示意图。具体步骤如下:
(1)客户端发送跨链交易的请求至第一中继器。
(2)第一中继器在其可信执行环境中管理跨链事务状态,调度该跨链交易的执行;第一中继器调用第一区块链的SendTx()接口向第一区块链发送第一指令;第一中继器向第二中继器发送包括该跨链交易的请求的消息(Msg)。其中,SendTx()即区块链SDK对外提供的发起交易的接口,此处以SendTx()表示,一般区块链系统均有这个接口,是一个通用接口;中继器调用区块链的SDK的SendTx()接口向区块链发交易。
(3)第一区块链向第一用户业务合约发送Tx()。其中,Tx()指的是区块链系统执行交易,即调用智能合约来执行交易。
(4)第一用户业务合约去第一跨链管理合约中查询是否存在该跨链交易的关键字记录,其中,第一跨链管理合约可以记录关键字的状态日志。具体地,若第一跨链管理合约中有该跨链交易的关键字记录,表明该关键字还处于上一次跨链流程,则本次跨链的第一子交易执行失败;若跨链管理合约中没有该关键字,则执行本次跨链的第一子交易得到该关键字的状态,调用第一跨链管理合约记录该关键字的状态,表明该关键字目前处于跨链流程中。
(5)第一用户业务合约向第一区块链返回Tx(),也即向第一区块链返回第一子交易的执行结果,具体地,调用第一用户业务合约来执行第一子交易。
(6)第一区块链向第一中继器返回SendTx(),也即向第一中继器返回第一子交易的执行结果。
(7)第二中继器接收到跨链交易的请求的消息(Msg)后,调用第二区块链的SendTx()接口向第二区块链发送第二指令。
(8)第二区块链向第二用户业务合约发送Tx(),具体地,调用第二用户业务合约来执行第二子交易。
(9)第二用户业务合约去第二跨链管理合约中查询是否存在该跨链交易的关键字记录,其中,第二跨链管理合约可以记录关键字的状态日志。具体地,若第二跨链管理合约中有该跨链交易的关键字记录,表明该关键字还处于上一次跨链流程,则本次跨链的第二子交易执行失败;若跨链管理合约中没有该关键字,则执行本次跨链的第二子交易得到该关键字的状态,调用第二跨链管理合约记录该关键字的状态,表明该关键字目前处于跨链流程中。
(10)第二用户业务合约向第二区块链返回Tx(),也即向第二区块链返回第二子交易的执行结果。
(11)第二区块链向第二中继器返回SendTx(),也即向第二中继器返回第二子交易的执行结果。
(12)第二中继器向第一中继器发送包括第二子交易的执行结果的消息(Msg)。
(13)第一中继器接收到第一子交易的执行结果和第二子交易的执行结果后,在其可信执行环境中管理跨链事务状态,向第一区块链和第二中继器发送跨链结果确认指令,也即调用第一区块链的SendTx()接口向第一区块链发送第三指令,以及向第二中继器发送包括第三指令的消息(Msg)。
(14)第一区块链向第一用户业务合约发送Tx(),也即执行第三指令。具体地,第一区块链收到跨链结果确认指令后,解析出其中的跨链结果,若跨链交易为失败,则使用第一跨链管理合约中记录的关键字的状态日志将该跨链交易的关键字的状态恢复到第一子交易执行前的状态;若跨链交易成功,则持久化更新后的该跨链交易的关键字的状态;最后删除第一跨链管理合约中该跨链交易的关键字的状态记录。
(15)第一用户业务合约回退或提交(也即持久化)关键字状态,以及删除第一跨链管理合约中记录的关键字的状态。
(16)第一用户业务合约向第一区块链返回Tx(),也即向第一区块链返回第三指令的执行结果。
(17)第一区块链向第一中继器返回SendTx(),也即向第一中继器返回第三指令的执行结果。
(18)第二中继器向第二区块链发送跨链结果确认指令,也即调用第二区块链的SendTx()接口向第二区块链发送第三指令。
(19)第二区块链向第二用户业务合约发送Tx(),也即执行第三指令。具体地,第二区块链收到跨链结果确认指令后,解析出其中的跨链结果,若跨链交易为失败,则使用第二跨链管理合约中记录的关键字的状态日志将该跨链交易的关键字的状态恢复到第二子交易执行前的状态;若跨链交易成功,则持久化更新后的该跨链交易的关键字的状态;最后删除第二跨链管理合约中该跨链交易的关键字的状态记录。
(20)第二用户业务合约回退或提交(也即持久化)关键字状态,以及删除第二跨链管理合约中记录的关键字的状态。
(21)第二用户业务合约向第二区块链返回Tx(),也即向第二区块链返回第三指令的执行结果。
(22)第二区块链向第二中继器返回SendTx(),也即向第二中继器返回第三指令的执行结果。
(23)第二中继器向第一中继器发送包括第三指令的执行结果的消息(Msg)
(24)第一中继器向客户端返回该跨链交易的执行结果。
应理解,图9所描述的区块链跨链步骤,中继器调用区块链的普通的发交易接口即可实现发送跨链交易指令,不需嵌入式修改区块链系统内核代码,部署跨链管理合约后,只需用户业务合约调用跨链管理合约相关接口,区块链系统中原有其他流程均无影响,异构区块链系统可简单快速的接入跨链平台。
当该跨链交易方法应用于图7所示的用于执行交易的跨区块链的系统时,第一节点包括第一用户业务合约和事务的两阶段提交接口,第一节点的事务的两阶段提交接口也即第一预提交接口、第一确认接口、第一回退接口;第二节点包括第二用户业务合约和事务的两阶段提交接口,第二节点的事务的两阶段提交接口也即第二预提交接口、第二确认接口、第二回退接口。第一中继器通过调用第一预提交接口、第一确认接口、第一回退接口进行事务的两阶段提交来实现第一节点(也即第一区块链)的跨链交易隔离性;第二中继器通过调用第二预提交接口、第二确认接口、第二回退接口进行事务的两阶段提交来实现第二节点(也即第二区块链)的跨链交易隔离性。具体描述如下:
在一种示例性的实施方式中,第一中继器向第一节点发送用于指示执行第一子交易的第一指令,包括:第一中继器调用第一预提交接口向第一节点发送第一指令。
其中,第一预提交接口也即第一区块链的预提交接口Prepare()。
应理解,第一节点接收到第一指令后,会执行第一子交易以得到跨链交易的关键字的第一状态,并向第一中继器发送第一子交易的执行结果。
可见,在本示例中,由于事务的两阶段提交接口是在现有区块链上新增的独立接口,第一预提交接口与区块链的普通的发交易接口不同,因此调用第一预提交接口向第一节点发送跨链的第一指令不会干扰到第一区块链上的普通交易,实现跨链交易隔离。
在一种示例性的实施方式中,该方法还包括:若跨链交易的执行结果指示跨链交易成功,第一中继器则调用第一确认接口向第一节点发送第三指令,其中,第三指令用于指示跨链交易成功;若跨链交易的执行结果指示跨链交易失败,第一中继器则调用第一回退接口向第一节点发送第三指令,其中,第三指令用于指示跨链交易失败。
其中,第一确认接口也即第一区块链的确认接口Commit(),第一回退接口也即第一区块链的回退接口Rollback()。
应理解,第一节点接收到第三指令后,若第三指令指示跨链交易成功,则持久化关键字的第一状态;若第三指令指示跨链交易失败,则将关键字的状态恢复到执行第一子交易前的状态。
可见,在本示例中,由于事务的两阶段提交接口是在现有区块链上新增的独立接口,第一确认接口或第一回退接口与区块链的普通的发交易接口不同,因此调用第一确认接口或第一回退接口发送跨链的第三指令不会干扰到第一区块链上的普通交易,实现跨链交易隔离。
在一种示例性的实施方式中,第二中继器向第二节点发送用于指示执行第二子交易的第一指令包括:第二中继器调用第二预提交接口向第二节点发送第二指令。
其中,第二预提交接口也即第二区块链的预提交接口Prepare()。
应理解,第二节点接收到第二指令后,会执行第二子交易以得到跨链交易的关键字的第二状态,并向第二中继器发送第二子交易的执行结果。
可见,在本示例中,由于事务的两阶段提交接口是在现有区块链上新增的独立接口,第二预提交接口与第二区块链的普通的发交易接口不同,因此调用第二预提交接口向第二节点发送跨链的第二指令不会干扰到第二区块链上的普通交易,有利于实现跨链交易隔离。
在一种示例性的实施方式中,该方法还包括:第一中继器在第一中继器的可信执行环境内,采用第一中继器的私钥对跨链交易的执行结果进行签名,以得到第六签名数据;第一中继器向第二中继器发送第六签名数据。
可见,在本示例中,第一中继器在其可信执行环境内,采用第一中继器的私钥对跨链交易的执行结果进行签名,以得到第六签名数据,然后将第六签名数据和第一中继器的身份证书一并发送给第二中继器,以便第二中继器通过该第一中继器的身份证书对该第六签名数据进行验签,使得第一中继器确定该跨链交易的执行结果是否是可信的,有利于第二中继器根据该跨链交易的执行结果指示第二节点执行相应的跨链指令,从而确保跨链流程可信。
在一种示例性的实施方式中,第二中继器保存有第三根证书,该方法还包括:第二中继器接收来自第一中继器的第六签名数据和第一中继器的身份证书;第二中继器在第二中继器的可信执行环境内,采用第三根证书验证第一中继器的身份证书,在验证通过后从第一中继器的身份证书中提取第一中继器的公钥,并采用第一中继器的公钥验签第六签名数据以确定跨链交易的执行结果是否可信。
需要说明的是,第二中继器接收第六签名数据和接收第一中继器的身份证书可以是一个动作,也可以是两个动作;例如,一个消息携带同时第六签名数据和第一中继器的身份证书,第一中继器将该消息发送给第二中继器,第二中继器接收该消息,也即接收到了该第六签名数据和该第一中继器的身份证书;或者,第一中继器通过两个消息分别将第六签名数据和第一中继器的身份证书发送给第二中继器;本申请对此不作具体限制。
可见,在本示例中,第二中继器保存有第三根证书,第二中继器接收到包含跨链交易的执行结果的第六签名数据和第一中继器的身份证书后,在其可信执行环境内,采用第三根证书验证第一中继器的身份证书,在验证通过后从第一中继器的身份证书中提取第一中继器的公钥,并采用第一中继器的公钥验签第六签名数据以确定该跨链交易的执行结果是否可信,有利于第二中继器根据该跨链交易的执行结果指示第二节点执行相应的跨链指令,从而确保跨链流程可信。
在一种示例性的实施方式中,该方法还包括:若跨链交易的执行结果指示跨链交易成功,第二中继器则调用第二确认接口向第二节点发送第三指令,其中,第三指令用于指示跨链交易成功;若跨链交易的执行结果指示跨链交易失败,第二中继器则调用第二回退接口向第二节点发送第三指令,其中,第三指令用于指示跨链交易失败。
其中,第一确认接口也即第一区块链的确认接口Commit(),第一回退接口也即第一区块链的回退接口Rollback()。
应理解,第二节点接收到第三指令后,若第三指令指示跨链交易成功,则持久化关键字的第二状态;若第三指令指示跨链交易失败,则将关键字的状态恢复到执行第二子交易前的状态。
可见,在本示例中,由于事务的两阶段提交接口是在现有区块链上新增的独立接口,第二确认接口或第二回退接口与第二区块链的普通的发交易接口不同,因此调用第二确认接口或第二回退接口发送跨链的第三指令不会干扰到第二区块链上的普通交易,有利于实现跨链交易隔离。
请一并参阅图10,图10是本申请实施例提供的另一种跨链交易方法的整体步骤示意图。具体步骤如下:
(1)客户端发送跨链交易的请求至第一中继器。
(2)第一中继器在可信执行环境中管理跨链事务状态,调度该跨链交易的执行;第一中继器调用第一区块链的Prepare()接口向第一区块链发送第一指令;第一中继器向第二中继器发送包括该跨链交易的请求的消息(Msg)。
(3)第一区块链向第一用户业务合约发送Tx()。其中,Tx()指的是区块链系统执行交易,即调用第一用户业务合约来执行第一子交易,得到该跨链交易的关键字的状态。
(4)第一用户业务合约向第一区块链返回Tx(),也即向第一区块链返回第一子交易的执行结果。
(5)第一区块链向第一中继器返回第一子交易的执行结果。
(6)第二中继器接收到跨链交易的请求的消息(Msg)后,调用第二区块链的Prepare()接口向第二区块链发送第二指令。
(7)第二区块链向第二用户业务合约发送Tx()。其中,Tx()指的是区块链系统执行交易,即调用第二用户业务合约来执行第二子交易,得到该跨链交易的关键字的状态。
(8)第二用户业务合约向第二区块链返回Tx(),也即向第二区块链返回第二子交易的执行结果。
(9)第二区块链向第二中继器返回第二子交易的执行结果。
(10)第二中继器向第一中继器发送包括第二子交易的执行结果的消息(Msg)。
(11)第一中继器接收到第一子交易的执行结果和第二子交易的执行结果后,在可信执行环境中管理跨链事务状态,向第一区块链和第二中继器发送跨链结果确认指令,也即调用第一区块链的Commit()接口或Rollback()接口向第一区块链发送第三指令,以及向第二中继器发送包括第三指令的消息(Msg)。
(12)第一区块链向第一用户业务合约发送Tx(),也即执行第三指令。具体地,第一区块链收到跨链结果确认指令后,解析出其中的跨链结果,若跨链交易为失败,则将该跨链交易的关键字的状态恢复到第一子交易执行前的状态;若跨链交易成功,则持久化得到的该跨链交易的关键字的状态。
(13)第一用户业务合约向第一区块链返回Tx(),也即向第一区块链返回第三指令的执行结果。
(14)第一区块链向第一中继器返回第三指令的执行结果。
(15)第二中继器向第二区块链发送跨链结果确认指令,也即调用第二区块链的Commit()接口或Rollback()接口向第二区块链发送第三指令。
(16)第二区块链向第二用户业务合约发送Tx(),也即执行第三指令。具体地,第二区块链收到跨链结果确认指令后,解析出其中的跨链结果,若跨链交易为失败,则将该跨链交易的关键字的状态恢复到第二子交易执行前的状态;若跨链交易成功,则持久化得到的该跨链交易的关键字的状态。
(17)第二用户业务合约向第二区块链返回Tx(),也即向第二区块链返回第三指令的执行结果。
(18)第二区块链向第二中继器返回第三指令的执行结果。
(19)第二中继器向第一中继器发送包括第三指令的执行结果的消息(Msg)
(20)第一中继器向客户端返回该跨链交易的执行结果。
应理解,图10所描述的区块链跨链步骤,中继器调用区块链的SDK的相应Prepare()接口和Commit()接口或Rollback()接口进行跨链事务的两阶段提交,也即图10所描述的区块链需要增设事务的两阶段提交接口。
本实施例借助硬件可信执行环境的天然优势,可简单高效实现中继器的身份可信和跨链流程的可信。首先,中继器之间通信时身份可信,中继器的根证书和公私钥均在可信执行环境中可见,使用中继器的根证书验证公钥,使用公钥对消息验签,保证中继器身份不可篡改伪造;其次,各跨链子交易的交易跨链事务状态在富执行环境是加密存储的,只有在可信执行环境中才可解密获取明文;各区块链的跨链子交易执行结果在中继器在可信执行环境中可验证,确保区块链诚实的使用正确的跨链子交易参数调用了正确的智能合约的功能,防止区块链作恶或数据被恶意篡改;跨链执行逻辑部署在中继器的在可信执行环境中,由在可信执行环境根据解密后的跨链事务状态计算出下一步跨链执行动作,组装指令内容并使用私钥加签后传递到富执行环境,保证了跨链流程处理的可信。上述流程通过具备可信执行环境的中继器实现了跨链流程的调度,不需要如中继链这种较复杂的结构和业务逻辑来保证跨链流程的可信。
本实施例还设计跨链管理合约实现跨链交易高效隔离,在跨链管理合约中,当某关键字处于跨链流程中,则其处于已锁(Lock)的状态,后续跟该关键字有关的任何交易都应直接失败或等待本次跨链交易的完成。如何更简洁高效的实现交易隔离,使得各区块链系统更快速便捷的接入跨链平台,是跨链流程需要重点考虑的环节。本实施例采用跨链管理合约,处于跨链流程中的关键字在跨链管理合约中记录其相应状态,当跨链结束时,再从跨链管理合约中删除,其他关于该关键字的交易从跨链管理合约中查询关键字的状态,如处于跨链流程,则表明该关键字已锁,后续交易不可执行;若跨链管理合约中没有记录该关键字的状态,表明该关键字没有处于跨链流程,后续交易可正常执行。采用跨链管理合约不需要嵌入式修改区块链内核代码,不需要区块链系统提供额外的功能,只需要用户编写其用户业务合约时调用跨链管理合约相关接口即可,可使各异构区块链系统简单快速的接入跨链平台参与跨链操作;各区块链系统也可通过实现事务的两阶段提交接口的方式实现交易隔离,此种方法需要各区块链系统修改底层代码,增设事务的两阶段提交接口。
请参阅图11,图11是本申请实施例提供的又一种用于执行交易的跨区块链的系统的架构示意图。图11所示的用于执行交易的跨区块链的系统包括中继节点、第一节点、第二节点;其中,第一节点维护第一区块链,第二节点维护第二区块链,中继节点为第一区块链和第二区块链的中继链上的共识节点,跨区块链的系统执行的跨链交易包括在第一区块链上执行的第一子交易和在第二区块链上执行的第二子交易;
中继节点,用于向第一节点发送用于指示执行第一子交易的第一指令,以及向第二节点发送用于指示执行第二子交易的第二指令;
第一节点,用于向中继节点发送第一子交易的执行结果;
第二节点,用于向中继节点发送第二子交易的执行结果;
中继节点,还用于根据第一子交易的执行结果和第二子交易的执行结果确定跨链交易的执行结果。
其中,第一区块链和第二区块链异构。此外,跨链交易可以由客户端触发,也可以由区块链节点触发。例如由出第一节点和第二节点之外的其他区块链节点向中继节点发送跨链交易的请求;该中继节点也是该其他区块链节点对应的中继器节点。其中,若跨链交易由客户端触发,则跨链交易的请求来自客户端,中继节点还用于向客户端发送跨链交易的执行结果;其中,若跨链交易由其他区块链节点触发,则跨链交易的请求来其他区块链节点,中继节点还用于向其他区块链节点发送跨链交易的执行结果。
应理解,若中继平台不具备硬件可信执行环境,可采用中继链的形式实现跨链流程的可信,由中继链调用各区块链的SDK向各区块链发起交易。中继链是一个区块链系统,中继链上记录跨链事务状态,保证跨链事务状态不可篡改,跨链指令经过链上共识后发出,跨链交易的隔离和原子性使用跨链管理合约实现。
在一种示例性的实施方式中,第一节点用于,基于第一指令,在第一跨链管理合约中查询是否存在跨链交易的关键字的记录;若存在关键字的记录,则向中继节点发送第一子交易的第一执行结果,其中,第一子交易的第一执行结果指示第一子交易执行失败;若不存在关键字的记录,则执行第一子交易以得到关键字的第一状态,并在第一跨链管理合约中记录关键字的第一状态,以及向中继节点发送第一子交易的第二执行结果。
具体地,第一节点包括第一跨链管理合约和第一用户业务合约,第一节点通过调用第一用户业务合约来执行基于第一指令执行的操作。
在一种示例性的实施方式中,第二节点用于,基于第二指令,在第二跨链管理合约中查询是否存在跨链交易的关键字的记录;若存在关键字的记录,则向中继节点发送第二子交易的第一执行结果,其中,第二子交易的第一执行结果指示第二子交易执行失败;若不存在关键字的记录,则执行第二子交易以得到关键字的第二状态,并在第二跨链管理合约中记录关键字的第二状态,以及向中继节点发送第二子交易的第二执行结果。
具体地,第二节点包括第二跨链管理合约和第二用户业务合约,第二节点通过调用第二用户业务合约来执行基于第二指令执行的操作。
在一种示例性的实施方式中,中继节点,还用于:向第一节点发送第三指令,以及向第二节点发送第三指令;其中,若跨链交易的执行结果指示跨链交易成功,第三指令用于指示跨链交易成功;若跨链交易的执行结果指示跨链交易失败,第三指令用于指示跨链交易失败。
在一种示例性的实施方式中,第一节点,还用于:若第三指令指示跨链交易成功,则持久化关键字的第一状态,并删除第一跨链管理合约中记录的关键字的第一状态;若第三指令指示跨链交易失败,则将关键字的状态恢复到执行第一子交易前的状态,并删除第一跨链管理合约中记录的关键字的第一状态。
在一种示例性的实施方式中,第二节点,还用于:若第三指令指示跨链交易成功,则持久化关键字的第二状态,并删除第二跨链管理合约中记录的关键字的第二状态;若第三指令指示跨链交易失败,则将关键字的状态恢复到执行第二子交易前的状态,并删除第二跨链管理合约中记录的关键字的第二状态。
可以看出,在本实施例中,在执行跨链交易之前,先去第一跨链管理合约中查询是否存在跨链交易的关键字的记录,在第一跨链管理合约中存在关键字的记录时,本次跨链交易中止或者直接执行失败,从而本次跨链交易不会干扰上一次跨链交易;在第一跨链管理合约中不存在关键字的记录时,执行第一子交易以得到该关键字的第一状态,并在该第一跨链管理合约中记录该关键字的第一状态,之后第一节点上的其他跨链交易或者普通交易都要中止或者直接执行失败,从而其他跨链交易或者普通交易不会干扰本次跨链交易。同理,在执行跨链交易之前,先去第二跨链管理合约中查询是否存在跨链交易的关键字的记录,在第二跨链管理合约中存在关键字的记录时,本次跨链交易中止或者直接执行失败,从而本次跨链交易不会干扰上一次跨链交易;在第二跨链管理合约中不存在关键字的记录时,执行第二子交易以得到该关键字的第二状态,并在该第二跨链管理合约中记录该关键字的第二状态,之后第二节点上的其他跨链交易或者普通交易都要中止或者直接执行失败,从而其他跨链交易或者普通交易不会干扰本次跨链交易。由此可以实现跨链交易隔离。
请参阅图12,图12是本申请实施例提供的另一种跨链交易方法的流程示意图;该方法可以应用于图11所描述的用于执行交易的跨区块链的系统,具体应用于图11所描述的用于执行交易的跨区块链的系统的中继节点,该方法包括:
步骤1201、中继节点向第一节点发送用于指示执行第一子交易的第一指令,以及向第二节点发送用于指示执行第二子交易的第二指令,其中,第一节点维护第一区块链,第二节点维护第二区块链,中继节点为第一区块链和第二区块链的中继链上的共识节点,跨链交易包括在第一区块链上执行的第一子交易和在第二区块链上执行的第二子交易。
其中,第一区块链和第二区块链异构。
其中,第一节点包括第一跨链管理合约,第一节点在接收到第一指令后,基于第一指令,在第一跨链管理合约中查询是否存在跨链交易的关键字的记录;若存在关键字的记录,则向中继节点发送第一子交易的第一执行结果,其中,第一子交易的第一执行结果指示第一子交易执行失败;若不存在关键字的记录,则执行第一子交易以得到关键字的第一状态,并在第一跨链管理合约中记录关键字的第一状态,以及向中继节点发送第一子交易的第二执行结果。
其中,第二节点包括第二跨链管理合约,第二节点在接收到第二指令后,基于第二指令,在第二跨链管理合约中查询是否存在跨链交易的关键字的记录;若存在关键字的记录,则向中继节点发送第二子交易的第一执行结果,其中,第二子交易的第一执行结果指示第二子交易执行失败;若不存在关键字的记录,则执行第二子交易以得到关键字的第二状态,并在第二跨链管理合约中记录关键字的第二状态,以及向中继节点发送第二子交易的第二执行结果。
步骤1202、中继节点接收来自第一节点的第一子交易的执行结果,以及接收来自第二节点的第二子交易的执行结果。
步骤1203、中继节点根据第一子交易的执行结果和第二子交易的执行结果确定跨链交易的执行结果。
具体地,根据第一子交易的执行结果和第二子交易的执行结果确定跨链交易的执行结果,包括:若第一子交易的执行结果指示第一子交易执行成功且第二子交易的执行结果指示第二子交易执行成功,则确定跨链交易成功;否则,确定跨链交易失败。
在一种示例性的实施方式中,该方法还包括:中继节点向第一节点发送第三指令,向第二节点发送第三指令;其中,若跨链交易的执行结果指示跨链交易成功,第三指令用于指示跨链交易成功;若跨链交易的执行结果指示跨链交易失败,第三指令用于指示跨链交易失败。
应理解,若第三指令指示跨链交易成功,第一节点在接收到第三指令后,会持久化关键字的第一状态,并删除第一跨链管理合约中记录的关键字的第一状态;若第三指令指示跨链交易失败,第一节点在接收到第三指令后,会将关键字的状态恢复到执行第一子交易前的状态,并删除第一跨链管理合约中记录的关键字的第一状态。
应理解,若第三指令指示跨链交易成功,第二节点在接收到第三指令后,会持久化关键字的第二状态,并删除第二跨链管理合约中记录的关键字的第二状态;若第三指令指示跨链交易失败,第二节点在接收到第三指令后,会将关键字的状态恢复到执行第二子交易前的状态,并删除第二跨链管理合约中记录的关键字的第二状态。
请一并参阅图13,图13是本申请实施例提供的又一种跨链交易方法的整体步骤示意图。具体步骤如下:
(1)客户端发送跨链交易的请求至中继链。
(2)中继链调用第一区块链的SendTx()接口向第一区块链发送第一指令,以及中继链调用第二区块链的SendTx()接口向第二区块链发送第二指令。其中,SendTx()即区块链SDK对外提供的发起交易的接口,此处以SendTx()表示,一般区块链系统均有这个接口,是一个通用接口;中继链调用区块链的SDK的SendTx()接口向区块链发交易。
(3)第一区块链向第一用户业务合约发送Tx()。其中,Tx()指的是区块链系统执行交易,即调用智能合约来执行交易,具体地,调用第一用户业务合约来执行第一子交易。
(4)第一用户业务合约去第一跨链管理合约中查询是否存在该跨链交易的关键字记录,其中,第一跨链管理合约可以记录关键字的状态日志。具体地,若第一跨链管理合约中有该跨链交易的关键字记录,表明该关键字还处于上一次跨链流程,则本次跨链的第一子交易执行失败;若跨链管理合约中没有该关键字,则执行本次跨链的第一子交易得到该关键字的状态,调用第一跨链管理合约记录该关键字的状态,表明该关键字目前处于跨链流程中。
(5)第一用户业务合约向第一区块链返回Tx(),也即向第一区块链返回第一子交易的执行结果。
(6)第一区块链向中继链返回SendTx(),也即向中继链返回第一子交易的执行结果。
(7)第二区块链向第二用户业务合约发送Tx(),具体地,调用第二用户业务合约来执行第二子交易。
(8)第二用户业务合约去第二跨链管理合约中查询是否存在该跨链交易的关键字记录,其中,第二跨链管理合约可以记录关键字的状态日志。具体地,若第二跨链管理合约中有该跨链交易的关键字记录,表明该关键字还处于上一次跨链流程,则本次跨链的第二子交易执行失败;若跨链管理合约中没有该关键字,则执行本次跨链的第二子交易得到该关键字的状态,调用第二跨链管理合约记录该关键字的状态,表明该关键字目前处于跨链流程中。
(9)第二用户业务合约向第二区块链返回Tx(),也即向第二区块链返回第二子交易的执行结果。
(10)第二区块链向中继链返回SendTx(),也即向中继链返回第二子交易的执行结果。
(11)中继链接收到第一子交易的执行结果和第二子交易的执行结果后,管理跨链事务状态,向第一区块链和第二区块链发送跨链结果确认指令,也即调用第一区块链的SendTx()接口向第一区块链发送第三指令,以及调用第二区块链的SendTx()接口向第二区块链发送第三指令。
(12)第一区块链向第一用户业务合约发送Tx(),也即执行第三指令。具体地,第一区块链收到跨链结果确认指令后,解析出其中的跨链结果,若跨链交易为失败,则使用第一跨链管理合约中记录的关键字的状态日志将该跨链交易的关键字的状态恢复到第一子交易执行前的状态;若跨链交易成功,则持久化更新后的该跨链交易的关键字的状态;最后删除第一跨链管理合约中该跨链交易的关键字的状态记录。
(13)第一用户业务合约回退或提交(也即持久化)关键字状态,以及删除第一跨链管理合约中记录的关键字的状态。
(14)第一用户业务合约向第一区块链返回Tx(),也即向第一区块链返回第三指令的执行结果。
(15)第一区块链向中继链返回SendTx(),也即向中继链返回第三指令的执行结果。
(16)第二区块链向第二用户业务合约发送Tx(),也即执行第三指令。具体地,第二区块链收到跨链结果确认指令后,解析出其中的跨链结果,若跨链交易为失败,则使用第二跨链管理合约中记录的关键字的状态日志将该跨链交易的关键字的状态恢复到第二子交易执行前的状态;若跨链交易成功,则持久化更新后的该跨链交易的关键字的状态;最后删除第二跨链管理合约中该跨链交易的关键字的状态记录。
(17)第二用户业务合约回退或提交(也即持久化)关键字状态,以及删除第二跨链管理合约中记录的关键字的状态。
(18)第二用户业务合约向第二区块链返回Tx(),也即向第二区块链返回第三指令的执行结果。
(19)第二区块链向中继链返回SendTx(),也即向中继链返回第三指令的执行结果。
(20)中继链向客户端返回该跨链交易的执行结果。
可以看出,在本实施例中,在执行跨链交易之前,先去第一跨链管理合约中查询是否存在跨链交易的关键字的记录,在第一跨链管理合约中存在关键字的记录时,本次跨链交易中止或者直接执行失败,从而本次跨链交易不会干扰上一次跨链交易;在第一跨链管理合约中不存在关键字的记录时,执行第一子交易以得到该关键字的第一状态,并在该第一跨链管理合约中记录该关键字的第一状态,之后第一节点上的其他跨链交易或者普通交易都要中止或者直接执行失败,从而其他跨链交易或者普通交易不会干扰本次跨链交易。同理,在执行跨链交易之前,先去第二跨链管理合约中查询是否存在跨链交易的关键字的记录,在第二跨链管理合约中存在关键字的记录时,本次跨链交易中止或者直接执行失败,从而本次跨链交易不会干扰上一次跨链交易;在第二跨链管理合约中不存在关键字的记录时,执行第二子交易以得到该关键字的第二状态,并在该第二跨链管理合约中记录该关键字的第二状态,之后第二节点上的其他跨链交易或者普通交易都要中止或者直接执行失败,从而其他跨链交易或者普通交易不会干扰本次跨链交易。由此可以实现跨链交易隔离。
请参阅图14,图14是本申请实施例提供的再一种用于执行交易的跨区块链的系统的架构示意图;图14所示的用于执行交易的跨区块链的系统包括中继器、第一节点、第二节点;其中,第一节点维护第一区块链,第二节点维护第二区块链,第一区块链和第二区块链同构,中继器具备可信执行环境,跨区块链的系统执行的跨链交易包括在第一区块链上执行的第一子交易和在第二区块链上执行的第二子交易;
中继器,用于向第一节点发送用于指示执行第一子交易的第一指令,以及向第二节点发送用于指示执行第二子交易的第二指令;
第一节点,用于向中继器发送第一子交易的执行结果;
第二节点,用于向中继器发送第二子交易的执行结果;
中继器,还用于在中继器的可信执行环境内,根据第一子交易的执行结果和第二子交易的执行结果确定跨链交易的执行结果。
在一种示例性的实施方式中,第一节点用于:采用第一节点的私钥对第一子交易的执行结果进行签名,以得到第二签名数据;向中继器发送第二签名数据。
在一种示例性的实施方式中,中继器保存有第一根证书,中继器还用于:接收来自第一节点的第二签名数据和第一节点的身份证书;在中继器的可信执行环境内,采用第一根证书验证第一节点的身份证书,并在验证通过后从第一节点的身份证书中提取第一节点的公钥,以及采用第一节点的公钥验签第二签名数据以确定第一子交易的执行结果是否可信。
其中,第一根证书为第一节点的根证书,具体可以为第一区块链的根证书。
在一种示例性的实施方式中,中继器还用于:在中继器的可信执行环境内,对第一子交易的执行结果进行验证,以确定第一子交易是否正确执行。
举例来说,中继器的可信执行环境内保存有预置交易验证策略,可以采用预置交易验证策略对第一子交易的执行结果进行验证,以确定第一子交易是否正确执行。
在一种示例性的实施方式中,第二节点用于:采用第二节点的私钥对第二子交易的执行结果进行签名,以得到第三签名数据;向中继器发送第三签名数据。
在一种示例性的实施方式中,中继器保存有第二根证书,中继器还用于:接收来自第二节点的第三签名数据和第二节点的身份证书;在中继器的可信执行环境内,采用第二根证书验证第二节点的身份证书,并在验证通过后从第二节点的身份证书中提取第二节点的公钥,以及采用第二节点的公钥验签第三签名数据以确定第二子交易的执行结果是否可信。
其中,第二根证书为第二节点的根证书,具体可以为第二区块链的根证书。
在一种示例性的实施方式中,中继器还用于:在中继器的可信执行环境内,对第二子交易的执行结果进行验证,以确定第二子交易是否正确执行。
举例来说,中继器的可信执行环境内保存有预置交易验证策略,可以采用预置交易验证策略对第二子交易的执行结果进行验证,以确定第二子交易是否正确执行。
在一种示例性的实施方式中,第一节点用于,基于第一指令,在第一跨链管理合约中查询是否存在跨链交易的关键字的记录;若存在关键字的记录,则向中继器发送第一子交易的第一执行结果,其中,第一子交易的第一执行结果指示第一子交易执行失败;若不存在关键字的记录,则执行第一子交易以得到关键字的第一状态,并在第一跨链管理合约中记录关键字的第一状态,以及向中继器发送第一子交易的第二执行结果。
具体地,第一节点包括第一跨链管理合约和第一用户业务合约,第一节点通过调用第一用户业务合约来执行基于第一指令执行的操作。
在一种示例性的实施方式中,第二节点用于,基于第二指令,在第二跨链管理合约中查询是否存在跨链交易的关键字的记录;若存在关键字的记录,则向中继器发送第二子交易的第一执行结果,其中,第二子交易的第一执行结果指示第二子交易执行失败;若不存在关键字的记录,则执行第二子交易以得到关键字的第二状态,并在第二跨链管理合约中记录关键字的第二状态,以及向中继器发送第二子交易的第二执行结果。
具体地,第二节点包括第二跨链管理合约和第二用户业务合约,第二节点通过调用第二用户业务合约来执行基于第二指令执行的操作。
在一种示例性的实施方式中,中继器,还用于:向第一节点发送第三指令,以及向第二节点发送第三指令;其中,若跨链交易的执行结果指示跨链交易成功,第三指令用于指示跨链交易成功;若跨链交易的执行结果指示跨链交易失败,第三指令用于指示跨链交易失败。
在一种示例性的实施方式中,第一节点,还用于:若第三指令指示跨链交易成功,则持久化关键字的第一状态,并删除第一跨链管理合约中记录的关键字的第一状态;若第三指令指示跨链交易失败,则将关键字的状态恢复到执行第一子交易前的状态,并删除第一跨链管理合约中记录的关键字的第一状态。
在一种示例性的实施方式中,第二节点,还用于:若第三指令指示跨链交易成功,则持久化关键字的第二状态,并删除第二跨链管理合约中记录的关键字的第二状态;若第三指令指示跨链交易失败,则将关键字的状态恢复到执行第二子交易前的状态,并删除第二跨链管理合约中记录的关键字的第二状态。
可以看出,在本实施例中,对于同构区块链之间的跨链交易,中继器具备可信执行环境,跨链交易结果在中继器的可信执行环境内确定,从而跨链交易结果可信,也即跨链流程可信。
请参阅图15,图15是本申请实施例提供的又一种跨链交易方法的流程示意图;该方法可以应用于图14所描述的用于执行交易的跨区块链的系统,具体应用于图14所描述的用于执行交易的跨区块链的系统的中继器,该方法包括:
步骤1501、向第一节点发送用于指示执行第一子交易的第一指令,以及向第二节点发送用于指示执行第二子交易的第二指令,其中,第一节点维护第一区块链,第二节点维护第二区块链,第一区块链和第二区块链同构,跨链交易包括在第一区块链上执行的第一子交易和在第二区块链上执行的第二子交易。
步骤1502、接收来自第一节点的第一子交易的执行结果,以及接收来自第二节点的第二子交易的执行结果。
步骤1503、在中继器的可信执行环境内,根据第一子交易的执行结果和第二子交易的执行结果确定跨链交易的执行结果。
在一种示例性的实施方式中,中继器保存有第一根证书,第一子交易的执行结果承载于第二签名数据,其中,第二签名数据由第一节点采用第一节点的私钥对第一子交易的执行结果进行签名得到,该方法还包括:中继器接收来自第一节点的第一节点的身份证书;中继器在中继器的可信执行环境内,采用第一根证书验证第一节点的身份证书,并在验证通过后从第一节点的身份证书中提取第一节点的公钥,以及采用第一节点的公钥验签第二签名数据以确定第二签名数据指示的第一子交易的执行结果是否可信。
其中,第一根证书为第一节点的根证书,具体可以为第一区块链的根证书。
需要说明的是,中继器接收第二签名数据和接收第一节点的身份证书可以是一个动作,也可以是两个动作;例如,一个消息同时携带第二签名数据和第一节点的身份证书,第一节点将该消息发送给中继器,中继器接收该消息,也即接收到了该第二签名数据和该第一节点的身份证书;或者,第一节点通过两个消息分别将第二签名数据和第一节点的身份证书发送给中继器;本申请对此不作具体限制。
在一种示例性的实施方式中,该方法还包括:在中继器的可信执行环境内,对第一子交易的执行结果进行验证,以确定第一子交易是否正确执行。
在一种示例性的实施方式中,中继器保存有第二根证书,第二子交易的执行结果承载于第三签名数据,其中,第三签名数据由第二节点采用第二节点的私钥对第二子交易的执行结果进行签名得到,该方法包括:接收来自第二节点的第二节点的身份证书;在中继器的可信执行环境内,采用第二根证书验证第二节点的身份证书,并在验证通过后从第二节点的身份证书中提取第二节点的公钥,以及采用第二节点的公钥验签第三签名数据以确定第三签名数据指示的第二子交易的执行结果是否可信。
需要说明的是,中继器接收第三签名数据和接收第二节点的身份证书可以是一个动作,也可以是两个动作;例如,一个消息携带同时第三签名数据和第二节点的身份证书,第二节点将该消息发送给中继器,中继器接收该消息,也即接收到了该第三签名数据和该第二节点的身份证书;或者,第二节点通过两个消息分别将第三签名数据和第二节点的身份证书发送给中继器;本申请对此不作具体限制。
其中,第二根证书为第二节点的根证书,具体可以为第二区块链的根证书。
在一种示例性的实施方式中,该方法还包括:在中继器的可信执行环境内,对第二子交易的执行结果进行验证,以确定第二子交易是否正确执行。
其中,第一节点包括第一跨链管理合约,第一节点在接收到第一指令后,基于第一指令,在第一跨链管理合约中查询是否存在跨链交易的关键字的记录;若存在关键字的记录,则向中继器发送第一子交易的第一执行结果,其中,第一子交易的第一执行结果指示第一子交易执行失败;若不存在关键字的记录,则执行第一子交易以得到关键字的第一状态,并在第一跨链管理合约中记录关键字的第一状态,以及向中继器发送第一子交易的第二执行结果。
其中,第二节点包括第二跨链管理合约,第二节点在接收到第二指令后,基于第二指令,在第二跨链管理合约中查询是否存在跨链交易的关键字的记录;若存在关键字的记录,则向中继器发送第二子交易的第一执行结果,其中,第二子交易的第一执行结果指示第二子交易执行失败;若不存在关键字的记录,则执行第二子交易以得到关键字的第二状态,并在第二跨链管理合约中记录关键字的第二状态,以及向中继器发送第二子交易的第二执行结果。
在一种示例性的实施方式中,该方法还包括:中继器向第一节点发送第三指令,向第二节点发送第三指令;其中,若跨链交易的执行结果指示跨链交易成功,第三指令用于指示跨链交易成功;若跨链交易的执行结果指示跨链交易失败,第三指令用于指示跨链交易失败。
应理解,若第三指令指示跨链交易成功,第一节点在接收到第三指令后,会持久化关键字的第一状态,并删除第一跨链管理合约中记录的关键字的第一状态;若第三指令指示跨链交易失败,第一节点在接收到第三指令后,会将关键字的状态恢复到执行第一子交易前的状态,并删除第一跨链管理合约中记录的关键字的第一状态。
应理解,若第三指令指示跨链交易成功,第二节点在接收到第三指令后,会持久化关键字的第二状态,并删除第二跨链管理合约中记录的关键字的第二状态;若第三指令指示跨链交易失败,第二节点在接收到第三指令后,会将关键字的状态恢复到执行第二子交易前的状态,并删除第二跨链管理合约中记录的关键字的第二状态。
请一并参阅图16,图16是本申请实施例提供的再一种跨链交易方法的整体步骤示意图。具体步骤如下:
(1)客户端发送跨链交易的请求至中继器。
(2)中继器在其可信执行环境中管理跨链事务状态,调度该跨链交易的执行;中继器调用第一区块链的SendTx()接口向第一区块链发送第一指令,以及中继器调用第二区块链的SendTx()接口向第二区块链发送第二指令。其中,SendTx()即区块链SDK对外提供的发起交易的接口,此处以SendTx()表示,一般区块链系统均有这个接口,是一个通用接口;中继器调用区块链的SDK的SendTx()接口向区块链发交易。
(3)第一区块链向第一用户业务合约发送Tx()。其中,Tx()指的是区块链系统执行交易,即调用智能合约来执行交易,具体地,调用第一用户业务合约来执行第一子交易。
(4)第一用户业务合约去第一跨链管理合约中查询是否存在该跨链交易的关键字记录,其中,第一跨链管理合约可以记录关键字的状态日志。具体地,若第一跨链管理合约中有该跨链交易的关键字记录,表明该关键字还处于上一次跨链流程,则本次跨链的第一子交易执行失败;若跨链管理合约中没有该关键字,则执行本次跨链的第一子交易得到该关键字的状态,调用第一跨链管理合约记录该关键字的状态,表明该关键字目前处于跨链流程中。
(5)第一用户业务合约向第一区块链返回Tx(),也即向第一区块链返回第一子交易的执行结果。
(6)第一区块链向中继器返回SendTx(),也即向中继器返回第一子交易的执行结果。
(7)第二区块链向第二用户业务合约发送Tx(),具体地,调用第二用户业务合约来执行第二子交易。
(8)第二用户业务合约去第二跨链管理合约中查询是否存在该跨链交易的关键字记录,其中,第二跨链管理合约可以记录关键字的状态日志。具体地,若第二跨链管理合约中有该跨链交易的关键字记录,表明该关键字还处于上一次跨链流程,则本次跨链的第二子交易执行失败;若跨链管理合约中没有该关键字,则执行本次跨链的第二子交易得到该关键字的状态,调用第二跨链管理合约记录该关键字的状态,表明该关键字目前处于跨链流程中。
(9)第二用户业务合约向第二区块链返回Tx(),也即向第二区块链返回第二子交易的执行结果。
(10)第二区块链向中继器返回SendTx(),也即向中继器返回第二子交易的执行结果。
(11)中继器接收到第一子交易的执行结果和第二子交易的执行结果后,在其可信执行环境中管理跨链事务状态;再向第一区块链和第二区块链发送跨链结果确认指令,也即调用第一区块链的SendTx()接口向第一区块链发送第三指令,以及调用第二区块链的SendTx()接口向第二区块链发送第三指令。
(12)第一区块链向第一用户业务合约发送Tx(),也即执行第三指令。具体地,第一区块链收到跨链结果确认指令后,解析出其中的跨链结果,若跨链交易为失败,则使用第一跨链管理合约中记录的关键字的状态日志将该跨链交易的关键字的状态恢复到第一子交易执行前的状态;若跨链交易成功,则持久化更新后的该跨链交易的关键字的状态;最后删除第一跨链管理合约中该跨链交易的关键字的状态记录。
(13)第一用户业务合约回退或提交(也即持久化)关键字状态,以及删除第一跨链管理合约中记录的关键字的状态。
(14)第一用户业务合约向第一区块链返回Tx(),也即向第一区块链返回第三指令的执行结果。
(15)第一区块链向中继器返回SendTx(),也即向中继器返回第三指令的执行结果。
(16)第二区块链向第二用户业务合约发送Tx(),也即执行第三指令。具体地,第二区块链收到跨链结果确认指令后,解析出其中的跨链结果,若跨链交易为失败,则使用第二跨链管理合约中记录的关键字的状态日志将该跨链交易的关键字的状态恢复到第二子交易执行前的状态;若跨链交易成功,则持久化更新后的该跨链交易的关键字的状态;最后删除第二跨链管理合约中该跨链交易的关键字的状态记录。
(17)第二用户业务合约回退或提交(也即持久化)关键字状态,以及删除第二跨链管理合约中记录的关键字的状态。
(18)第二用户业务合约向第二区块链返回Tx(),也即向第二区块链返回第三指令的执行结果。
(19)第二区块链向中继器返回SendTx(),也即向中继器返回第三指令的执行结果。
(20)中继器向客户端返回该跨链交易的执行结果。
可以看出,在本实施例中,对于同构区块链之间的跨链交易,中继器具备可信执行环境,跨链交易结果在中继器的可信执行环境内确定,从而跨链交易结果可信,也即跨链流程可信。
请参阅图17,图17是本申请实施例提供的再一种跨链交易方法的流程示意图。该方法可以应用于图5、图11、图14所描述的用于执行交易的跨区块链的系统,具体应用于图5、图11、图14所描述的用于执行交易的跨区块链的系统中的第一节点和/或第二节点,该方法包括:
步骤1701、节点A接收来自中继器A或节点C的用于指示执行子交易A的指令,其中,子交易A为区块链A与区块链B进行跨链交易时,由区块链A执行的子交易;中继器A为与节点A连接的中继器;节点C为区块链C上的共识节点,区块链C为区块链A和区块链B的中继链。
其中,节点A维护区块链A,节点A包括跨链管理合约A。
步骤1702、节点A在跨链管理合约A中查询是否存在跨链交易的关键字的记录。
其中,该关键字的记录包括关键字和关键字的状态。举例来说,该跨链交易的关键字为比特币,则该关键字的记录包括比特币和比特币的状态,此时比特币的状态为比特币的个数。
步骤1703、若存在关键字的记录,节点A则向中继器A或节点C发送子交易A的第一执行结果,其中,子交易A的第一执行结果指示子交易A执行失败。
步骤1704、若不存在关键字的记录,节点A则执行子交易A以得到关键字的状态A,并在跨链管理合约A中记录关键字的状态A,以及向中继器A或节点C发送子交易A的第二执行结果。
举例来说,假设子交易A是区块链A的比特币减少10个,区块链A原资产为100个比特币,执行完子交易A——比特币减少10个后,得到关键字的状态A——90个比特币。
其中,节点A包括上述第一节点和第二节点,中继器A包括上述第一中继器和第二中继器,节点C包括上述中继器节点,子交易A包括上述第一子交易和第二子交易,区块链A包括上述第一区块链,区块链B包括上述第二区块链,跨链管理合约A包括上述第一跨链管理合约和第二跨链管理合约,关键字的状态A包括上述关键字的第一状态和第二状态。
当节点A为上述第一节点时,中继器A为上述第一中继器,节点C包括上述中继器节点,子交易A为上述第一子交易,区块链A为上述第一区块链,跨链管理合约A为上述第一跨链管理合约,关键字的状态A为上述关键字的第一状态。
当节点A为上述第二节点时,中继器A为上述第二中继器,节点C包括上述中继器节点,子交易A为上述第二子交易,区块链A为上述第二区块链,跨链管理合约A为上述第二跨链管理合约,关键字的状态A为上述关键字的第二状态。
可以看出,在本实施例中,在执行跨链交易之前,先去跨链管理合约A中查询是否存在跨链交易的关键字的记录,在跨链管理合约A中存在关键字的记录时,本次跨链交易中止或者直接执行失败,从而本次跨链交易不会干扰上一次跨链交易;在跨链管理合约A中不存在关键字的记录时,执行子交易A以得到该关键字的状态A,并在该跨链管理合约A中记录该关键字的状态A,之后节点A上的其他跨链交易或者普通交易都要中止或者直接执行失败,从而其他跨链交易或者普通交易不会干扰本次跨链交易,由此实现跨链交易隔离。
在一种示例性的实施方式中,该方法还包括:节点A接收来自中继器A或节点C的第三指令;若第三指令指示跨链交易成功,节点A则持久化关键字的状态A,并删除跨链管理合约A中记录的关键字的状态A;若第三指令指示跨链交易失败,节点A则将关键字的状态恢复到执行子交易A前的状态,并删除跨链管理合约A中记录的关键字的状态A。
具体地,若第三指令指示跨链交易失败,可以根据跨链管理合约A中记录的关键字的状态A将区块链A对应的关键字的状态恢复到执行子交易A前的状态。
举例来说,区块链A的原资产为比特币100个,子交易A是区块链A的比特币减少10个,跨链交易的关键字为比特币;节点A接收到比特币减少10个的指令后,去跨链管理合约A中查询是否存在比特币的记录,也即查询是否存在比特币或比特币的状态;若存在比特币的记录,节点A则向中继器A或节点C发送比特币减少10个的第一执行结果,其中,比特币减少10个的第一执行结果指示比特币减少10个执行失败;若不存在比特币的记录,节点A执行比特币减少10个,得到比特币的状态A——比特币90个,并将比特币的状态——比特币90个记录在跨链管理合约A中,且此时区块链A的资产为比特币90个,但这是暂时的状态;当接收到第三指令后,若第三指令指示跨链交易成功,则持久化比特币的状态,区块链A的资产持久化为比特币90个,并删除跨链管理合约A中记录的比特币的状态——比特币90个;若第三指令指示跨链交易失败,则节点A则将区块链的资产恢复到比特币100个,也即跨链管理合约A中记录的比特币的状态A——比特币90个,而子交易A——比特币减少10个,那么恢复为比特币100个。
可见,在本示例中,跨链交易成功,节点A持久化关键字的状态;跨链交易失败,节点A将关键字的状态恢复到跨链交易前的状态,由此实现了跨链交易的持久性和一致性;而无论跨链交易成功与否,节点A都将跨链管理合约A上的关键字记录删除,从而之后的其他跨链交易或者普通交易都不会受到此次跨链交易的干扰,由此实现了跨链交易的隔离性。
上述详细阐述了本申请实施例的方法,下面提供了本申请实施例的装置。
请参见图18,图18是本申请实施例提供的一种跨链交易装置1800的结构示意图,应用于具备可信执行环境的第一中继器,该第一中继器对应第一区块链,该跨链交易装置1800可以包括发送单元1801、接收单元1802和确定单元1803,其中,各个单元的详细描述如下:
发送单元1801,用于向第一节点发送用于指示执行第一子交易的第一指令,以及向第二中继器发送跨链交易的请求,其中,第一节点维护第一区块链,第二中继器对应第二区块链,跨链交易包括在第一区块链上执行的第一子交易和在第二区块链上执行的第二子交易;
接收单元1802,用于接收来自第一节点的第一子交易的执行结果,以及接收来自第二中继器的第二子交易的执行结果;
确定单元1803,用于在第一中继器的可信执行环境内,根据第一子交易的执行结果和第二子交易的执行结果确定跨链交易的执行结果。
在一种示例性的实施方式中,发送单元1801,还用于:基于跨链交易的执行结果向第一节点发送第三指令;其中,若跨链交易的执行结果指示跨链交易成功,第三指令用于指示跨链交易成功;若跨链交易的执行结果指示跨链交易失败,第三指令用于指示跨链交易失败。
在一种示例性的实施方式中,发送单元1801,用于:在第一中继器的可信执行环境内,采用第一中继器的私钥对跨链交易的请求进行签名,以得到第一签名数据;向第二中继器发送第一签名数据。
在一种示例性的实施方式中,第一中继器保存有第一根证书,第一子交易的执行结果承载于第二签名数据,接收单元1802,还用于:接收来自第一节点的第一节点的身份证书;在第一中继器的可信执行环境内,采用第一根证书验证第一节点的身份证书,并在验证通过后从第一节点的身份证书中提取第一节点的公钥,以及采用第一节点的公钥验签第二签名数据以确定第二签名数据指示的第一子交易的执行结果是否可信。
在一种示例性的实施方式中,确定单元1803,还用于:在第一中继器的可信执行环境内,基于第一子交易的执行结果确定第一子交易是否正确执行。
在一种示例性的实施方式中,第一中继器保存有第三根证书,第二子交易的执行结果承载于第四签名数据,接收单元1802,还用于:接收来自第二中继器的第二中继器的身份证书;在第一中继器的可信执行环境内,采用第三根证书验证第二中继器的身份证书,在验证通过后从第二中继器的身份证书中提取第二中继器的公钥,并采用第二中继器的公钥验签第四签名数据以确定第四签名数据指示的第二子交易的执行结果是否可信。
需要说明的是,各个单元的实现还可以对应参照图8所示的方法实施例的相应描述。当然,本申请实施例提供的跨链交易装置1800包括但不限于上述单元模块,例如:该跨链交易装置1800还可以包括存储单元1804,存储单元1804可以用于存储该跨链交易装置1800的程序代码和数据。
在图18所描述的跨链交易装置1800中,向第一节点发送用于指示执行第一子交易的第一指令,以及向第二中继器发送跨链交易的请求,其中,第一节点维护第一区块链,第二中继器对应第二区块链,跨链交易包括在第一区块链上执行的第一子交易和在第二区块链上执行的第二子交易;接收来自第一节点的第一子交易的执行结果,以及接收来自第二中继器的第二子交易的执行结果;接收到第一子交易的执行结果和第二子交易的执行结果后,在第一中继器的可信执行环境内,根据第一子交易的执行结果和第二子交易的执行结果确定跨链交易的执行结果。应理解,由于第一中继器具备可信执行环境,第一中继器在可信执行环境内确定跨链交易的执行结果,因此该确定的跨链交易的执行结果是否是可信的,从而使得跨链交易流程是可信的。
请参见图19,图19是本申请实施例提供的一种跨链交易装置1900的结构示意图,应用于节点A,节点A维护区块链A,节点A包括跨链管理合约A,该跨链交易装置1900可以包括接收单元1901、查询单元1902和发送单元1903,其中,各个单元的详细描述如下:
接收单元1901,用于接收来自中继器A或节点C的用于指示执行子交易A的指令,其中,子交易A为区块链A与区块链B进行跨链交易时,由区块链A执行的子交易;中继器A为与节点A连接的中继器;节点C为区块链C上的共识节点,区块链C为区块链A和区块链B的中继链;
查询单元1902,用于在跨链管理合约A中查询是否存在跨链交易的关键字的记录;
发送单元1903,用于若存在关键字的记录,则向中继器A或节点C发送子交易A的第一执行结果,其中,子交易A的第一执行结果指示子交易A执行失败;发送单元,还用于若不存在关键字的记录,则执行子交易A以得到关键字的状态A,并在跨链管理合约A中记录关键字的状态A,以及向中继器A或节点C发送子交易A的第二执行结果。
在一种示例性的实施方式中,接收单元1901,还用于:接收来自中继器A或节点C的第三指令;若第三指令指示跨链交易成功,则持久化关键字的状态A,并删除跨链管理合约A中记录的关键字的状态A;若第三指令指示跨链交易失败,则将关键字的状态恢复到执行子交易A前的状态,并删除跨链管理合约A中记录的关键字的状态A。
需要说明的是,各个单元的实现还可以对应参照图17所示的方法实施例的相应描述。当然,本申请实施例提供的跨链交易装置1900包括但不限于上述单元模块,例如:该跨链交易装置1900还可以包括存储单元1904,存储单元1904可以用于存储该跨链交易装置1900的程序代码和数据。
在图19所描述的跨链交易装置1900中,在执行跨链交易之前,先去跨链管理合约A中查询是否存在跨链交易的关键字的记录,在跨链管理合约A中存在关键字的记录时,本次跨链交易中止或者直接执行失败,从而本次跨链交易不会干扰上一次跨链交易;在跨链管理合约A中不存在关键字的记录时,执行子交易A以得到该关键字的状态A,并在该跨链管理合约A中记录该关键字的状态A,之后节点A上的其他跨链交易或者普通交易都要中止或者直接执行失败,从而其他跨链交易或者普通交易不会干扰本次跨链交易,由此实现跨链交易隔离。
请参见图20,图20是本申请实施例提供的一种具备可信执行环境的第一中继器2010的结构示意图,该第一中继器2010包括处理器2011、存储器2012和通信接口2013,上述处理器2011、存储器2012和通信接口2013通过总线2014相互连接。
存储器2012包括但不限于是随机存储记忆体(random access memory,RAM)、只读存储器(read-only memory,ROM)、可擦除可编程只读存储器(erasable programmableread only memory,EPROM)、或便携式只读存储器(compact disc read-only memory,CD-ROM),该存储器2012用于相关计算机程序及数据。通信接口2013用于接收和发送数据。
处理器2011可以是一个或多个中央处理器(central processing unit,CPU),在处理器2011是一个CPU的情况下,该CPU可以是单核CPU,也可以是多核CPU。
该第一中继器2010中的处理器2011用于读取上述存储器2012中存储的计算机程序代码,执行以下操作:向第一节点发送用于指示执行第一子交易的第一指令,以及向第二中继器发送跨链交易的请求,其中,第一节点维护第一区块链,第二中继器对应第二区块链,跨链交易包括在第一区块链上执行的第一子交易和在第二区块链上执行的第二子交易;接收来自第一节点的第一子交易的执行结果,以及接收来自第二中继器的第二子交易的执行结果;在第一中继器的可信执行环境内,根据第一子交易的执行结果和第二子交易的执行结果确定跨链交易的执行结果。
需要说明的是,各个操作的实现还可以对应参照图8所示的方法实施例的相应描述。
在图20所描述的第一中继器2010中,向第一节点发送用于指示执行第一子交易的第一指令,以及向第二中继器发送跨链交易的请求,其中,第一节点维护第一区块链,第二中继器对应第二区块链,跨链交易包括在第一区块链上执行的第一子交易和在第二区块链上执行的第二子交易;接收来自第一节点的第一子交易的执行结果,以及接收来自第二中继器的第二子交易的执行结果;接收到第一子交易的执行结果和第二子交易的执行结果后,在第一中继器的可信执行环境内,根据第一子交易的执行结果和第二子交易的执行结果确定跨链交易的执行结果。应理解,由于第一中继器具备可信执行环境,第一中继器在可信执行环境内确定跨链交易的执行结果,因此该确定的跨链交易的执行结果是否是可信的,从而使得跨链交易流程是可信的。
请参见图21,图21是本申请实施例提供的一种节点A的结构示意图,该节点A维护区块链A,该节点A包括跨链管理合约A,该节点A包括处理器2111、存储器2112和通信接口2113,上述处理器2111、存储器2112和通信接口2113通过总线2114相互连接。
存储器2112包括但不限于是随机存储记忆体(random access memory,RAM)、只读存储器(read-only memory,ROM)、可擦除可编程只读存储器(erasable programmableread only memory,EPROM)、或便携式只读存储器(compact disc read-only memory,CD-ROM),该存储器2112用于相关计算机程序及数据。通信接口2113用于接收和发送数据。
处理器2111可以是一个或多个中央处理器(central processing unit,CPU),在处理器2111是一个CPU的情况下,该CPU可以是单核CPU,也可以是多核CPU。
该第一中继器2110中的处理器2111用于读取上述存储器2112中存储的计算机程序代码,执行以下操作:接收来自中继器A或节点C的用于指示执行子交易A的指令,其中,子交易A为区块链A与区块链B进行跨链交易时,由区块链A执行的子交易;中继器A为与节点A连接的中继器;节点C为区块链C上的共识节点,区块链C为区块链A和区块链B的中继链;在跨链管理合约A中查询是否存在跨链交易的关键字的记录;若存在关键字的记录,则向中继器A或节点C发送子交易A的第一执行结果,其中,子交易A的第一执行结果指示子交易A执行失败;若不存在关键字的记录,则执行子交易A以得到关键字的状态A,并在跨链管理合约A中记录关键字的状态A,以及向中继器A或节点C发送子交易A的第二执行结果。
需要说明的是,各个操作的实现还可以对应参照图17所示的方法实施例的相应描述。
在图21所描述的节点A中,在执行跨链交易之前,先去跨链管理合约A中查询是否存在跨链交易的关键字的记录,在跨链管理合约A中存在关键字的记录时,本次跨链交易中止或者直接执行失败,从而本次跨链交易不会干扰上一次跨链交易;在跨链管理合约A中不存在关键字的记录时,执行子交易A以得到该关键字的状态A,并在该跨链管理合约A中记录该关键字的状态A,之后节点A上的其他跨链交易或者普通交易都要中止或者直接执行失败,从而其他跨链交易或者普通交易不会干扰本次跨链交易,由此实现跨链交易隔离。
本申请实施例还提供一种芯片,上述芯片包括至少一个处理器,存储器和接口电路,上述存储器、上述收发器和上述至少一个处理器通过线路互联,上述至少一个存储器中存储有计算机程序;上述计算机程序被上述处理器执行时,图8、图12、图15和图17所示的方法流程得以实现。
本申请实施例还提供一种计算机可读存储介质,上述计算机可读存储介质中存储有计算机程序,当其在计算机上运行时,图8、图12、图15和图17所示的方法流程得以实现。
本申请实施例还提供一种计算机程序产品,当上述计算机程序产品在计算机上运行时,图8、图12、图15和图17所示的方法流程得以实现。
综上所述,在本申请提供的技术方案中,使用中继器的可信执行环境存储中继器组织的根证书和公私钥,可对其他中继器的身份进行验证,保护中继器身份可信。使用中继器的可信执行环境存储跨链事务状态,富执行环境仅能获取到跨链事务状态密文,保护跨链交易的执行可信。使用中继器的可信执行环境进行跨链流程的处理,下一步跨链操作的指令由可信执行环境内部根据交易状态决定和发出,确保跨链指令的可信,防止区块链被恶意操作,使得跨链流程安全可信。中继器的可信执行环境预置交易验证策略,可验证各跨链子交易的执行结果,保证区块链确实是根据中继器发出的跨链指令和跨链数据,调用了正确的合约使用了正确的参数执行了正确的操作,防止区块链作恶或数据篡改。通过部署跨链管理合约,跨链管理合约记录跨链交易的关键字的状态,后续交易根据跨链管理合约中的关键字的状态判断该关键字是否被锁住,从而确定关键字是否处于跨链流程中;跨链交易结束时,从跨链管理合约中删除该关键字,并根据跨链交易的成功或失败来决定是否将该跨链交易的关键字的状态恢复到跨链前的状态,保证跨链交易的高效隔离和原子性。该方案不需嵌入式修改区块链系统内核代码,部署跨链管理合约后,只需用户业务合约调用跨链管理合约相关接口,区块链系统中原有其他流程均无影响,异构区块链系统可简单快速的接入跨链平台。
应理解,本申请实施例中提及的处理器可以是中央处理单元(CentralProcessing Unit,CPU),还可以是其他通用处理器、数字信号处理器(Digital SignalProcessor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
还应理解,本申请实施例中提及的存储器可以是易失性存储器或非易失性存储器,或可包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(Read-Only Memory,ROM)、可编程只读存储器(Programmable ROM,PROM)、可擦除可编程只读存储器(Erasable PROM,EPROM)、电可擦除可编程只读存储器(Electrically EPROM,EEPROM)或闪存。易失性存储器可以是随机存取存储器(Random Access Memory,RAM),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的RAM可用,例如静态随机存取存储器(Static RAM,SRAM)、动态随机存取存储器(Dynamic RAM,DRAM)、同步动态随机存取存储器(Synchronous DRAM,SDRAM)、双倍数据速率同步动态随机存取存储器(Double DataRate SDRAM,DDR SDRAM)、增强型同步动态随机存取存储器(Enhanced SDRAM,ESDRAM)、同步连接动态随机存取存储器(Synchlink DRAM,SLDRAM)和直接内存总线随机存取存储器(Direct Rambus RAM,DR RAM)。
需要说明的是,当处理器为通用处理器、DSP、ASIC、FPGA或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件时,存储器(存储模块)集成在处理器中。
应注意,本文描述的存储器旨在包括但不限于这些和任意其它适合类型的存储器。
还应理解,本文中涉及的第一、第二、第三、第四以及各种数字编号仅为描述方便进行的区分,并不用来限制本申请的范围。
应理解,本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。
应理解,在本申请的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,上述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
上述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
上述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所示方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
本申请实施例方法中的步骤可以根据实际需要进行顺序调整、合并和删减。
本申请实施例装置中的模块可以根据实际需要进行合并、划分和删减。
以上所述,以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的范围。
Claims (30)
1.一种用于执行交易的跨区块链的系统,其特征在于,包括第一中继器、第二中继器、第一节点、第二节点;其中,所述第一节点维护第一区块链,所述第二节点维护第二区块链,所述跨区块链的系统执行的跨链交易包括在所述第一区块链上执行的第一子交易和在所述第二区块链上执行的第二子交易;
所述第一中继器,用于向所述第一节点发送用于指示执行所述第一子交易的第一指令,以及向所述第二中继器发送所述跨链交易的请求;
所述第二中继器,用于根据接收到的所述跨链交易的请求,向所述第二节点发送用于指示执行所述第二子交易的第二指令;
所述第二中继器,还用于将来自所述第二节点的所述第二子交易的执行结果,向所述第一中继器发送;
所述第一中继器,还用于在所述第一中继器的可信执行环境内,根据来自所述第一节点的所述第一子交易的执行结果和来自所述第二中继器的所述第二子交易的执行结果确定所述跨链交易的执行结果。
2.根据权利要求1所述的系统,其特征在于,所述第一节点用于,基于所述第一指令,
在第一跨链管理合约中查询是否存在所述跨链交易的关键字的记录;
若存在所述关键字的记录,则向所述第一中继器发送所述第一子交易的第一执行结果,其中,所述第一子交易的第一执行结果指示所述第一子交易执行失败;
若不存在所述关键字的记录,则执行所述第一子交易以得到所述关键字的第一状态,并在所述第一跨链管理合约中记录所述关键字的第一状态,以及向所述第一中继器发送所述第一子交易的第二执行结果。
3.根据权利要求1所述的系统,其特征在于,所述第一节点,还用于:
采用所述第一节点的私钥对所述第一子交易的执行结果进行签名,以得到第二签名数据;
向所述第一中继器发送所述第二签名数据。
4.根据权利要求3所述的系统,其特征在于,所述第一中继器保存有第一根证书,所述第一中继器,还用于:
接收来自所述第一节点的所述第二签名数据和所述第一节点的身份证书;
在所述第一中继器的可信执行环境内,采用所述第一根证书验证所述第一节点的身份证书,并在验证通过后从所述第一节点的身份证书中提取所述第一节点的公钥,以及采用所述第一节点的公钥验签所述第二签名数据以确定所述第一子交易的执行结果是否可信。
5.根据权利要求1-4任一项所述的系统,其特征在于,所述第一中继器,还用于:
向所述第一节点发送第三指令;
其中,若所述跨链交易的执行结果指示所述跨链交易成功,所述第三指令用于指示所述跨链交易成功;若所述跨链交易的执行结果指示所述跨链交易失败,所述第三指令用于指示所述跨链交易失败。
6.根据权利要求5所述的系统,其特征在于,所述第一节点,还用于:
若所述第三指令指示所述跨链交易成功,则持久化所述关键字的第一状态,并删除所述第一跨链管理合约中记录的所述关键字的第一状态;
若所述第三指令指示所述跨链交易失败,则将所述关键字的状态恢复到执行所述第一子交易前的状态,并删除所述第一跨链管理合约中记录的所述关键字的第一状态。
7.根据权利要求1所述的系统,其特征在于,所述第二节点用于,基于所述第二指令,
在第二跨链管理合约中查询是否存在所述跨链交易的关键字的记录;
若存在所述关键字的记录,则向所述第二中继器发送所述第二子交易的第一执行结果,其中,所述第二子交易的第一执行结果指示所述第二子交易执行失败;
若不存在所述关键字的记录,则执行所述第二子交易以得到所述关键字的第二状态,并在所述第二跨链管理合约中记录所述关键字的第二状态,以及向所述第二中继器发送所述第二子交易的第二执行结果。
8.根据权利要求1或7所述的系统,其特征在于,所述第二中继器,还用于:
接收来自所述第一中继器的第三指令;
向所述第二节点发送所述第三指令;
其中,若所述跨链交易的执行结果指示所述跨链交易成功,所述第三指令用于指示所述跨链交易成功;若所述跨链交易的执行结果指示所述跨链交易失败,所述第三指令用于指示所述跨链交易失败。
9.根据权利要求8所述的系统,其特征在于,所述第二节点,还用于:
若所述第三指令指示所述跨链交易成功,则持久化所述关键字的第二状态,并删除所述第二跨链管理合约中记录的所述关键字的第二状态;
若所述第三指令指示所述跨链交易失败,则将所述关键字的状态恢复到执行所述第二子交易前的状态,并删除所述第二跨链管理合约中记录的所述关键字的第二状态。
10.一种跨链交易方法,其特征在于,应用于具备可信执行环境的第一中继器,所述第一中继器对应第一区块链,所述方法包括:
向第一节点发送用于指示执行第一子交易的第一指令,以及向第二中继器发送跨链交易的请求,其中,所述第一节点维护所述第一区块链,所述第二中继器对应第二区块链,所述跨链交易包括在所述第一区块链上执行的所述第一子交易和在所述第二区块链上执行的第二子交易;
接收来自所述第一节点的所述第一子交易的执行结果,以及接收来自所述第二中继器的所述第二子交易的执行结果;
在所述第一中继器的可信执行环境内,根据所述第一子交易的执行结果和所述第二子交易的执行结果确定所述跨链交易的执行结果。
11.根据权利要求10所述的方法,其特征在于,所述方法还包括:
基于所述跨链交易的执行结果向所述第一节点发送第三指令;
其中,若所述跨链交易的执行结果指示所述跨链交易成功,所述第三指令用于指示所述跨链交易成功;若所述跨链交易的执行结果指示所述跨链交易失败,所述第三指令用于指示所述跨链交易失败。
12.根据权利要求10或11所述的方法,其特征在于,所述向第二中继器发送所述跨链交易的请求,包括:
在所述第一中继器的可信执行环境内,采用所述第一中继器的私钥对所述跨链交易的请求进行签名,以得到第一签名数据;
向所述第二中继器发送所述第一签名数据。
13.根据权利要求10或11所述的方法,其特征在于,所述第一中继器保存有第一根证书,所述第一子交易的执行结果承载于第二签名数据,所述方法还包括:
接收来自所述第一节点的所述第一节点的身份证书;
在所述第一中继器的可信执行环境内,采用所述第一根证书验证所述第一节点的身份证书,并在验证通过后从所述第一节点的身份证书中提取所述第一节点的公钥,以及采用所述第一节点的公钥验签所述第二签名数据以确定所述第二签名数据指示的所述第一子交易的执行结果是否可信。
14.根据权利要求10或11所述的方法,其特征在于,在接收来自所述第一节点的所述第一子交易的执行结果之后,所述方法还包括:
在所述第一中继器的可信执行环境内,基于所述第一子交易的执行结果确定所述第一子交易是否正确执行。
15.根据权利要求10或11所述的方法,其特征在于,所述第一中继器保存有第三根证书,所述第二子交易的执行结果承载于第四签名数据,所述方法还包括:
接收来自所述第二中继器的所述第二中继器的身份证书;
在所述第一中继器的可信执行环境内,采用所述第三根证书验证所述第二中继器的身份证书,在验证通过后从所述第二中继器的身份证书中提取所述第二中继器的公钥,并采用所述第二中继器的公钥验签所述第四签名数据以确定所述第四签名数据指示的所述第二子交易的执行结果是否可信。
16.一种跨链交易方法,其特征在于,应用于节点A,所述节点A维护区块链A,所述节点A包括跨链管理合约A,所述方法包括:
接收来自中继器A或节点C的用于指示执行子交易A的指令,其中,所述子交易A为所述区块链A与区块链B进行跨链交易时,由所述区块链A执行的子交易;所述中继器A为与所述节点A连接的中继器;所述节点C为区块链C上的共识节点,所述区块链C为所述区块链A和所述区块链B的中继链;
在所述跨链管理合约A中查询是否存在所述跨链交易的关键字的记录;
若存在所述关键字的记录,则向所述中继器A或所述节点C发送所述子交易A的第一执行结果,其中,所述子交易A的第一执行结果指示所述子交易A执行失败;
若不存在所述关键字的记录,则执行所述子交易A以得到所述关键字的状态A,并在所述跨链管理合约A中记录所述关键字的状态A,以及向所述中继器A或所述节点C发送所述子交易A的第二执行结果。
17.根据权利要求16所述的方法,其特征在于,所述方法还包括:
接收来自所述中继器A或所述节点C的第三指令;
若所述第三指令指示所述跨链交易成功,则持久化所述关键字的状态A,并删除所述跨链管理合约A中记录的所述关键字的状态A;
若所述第三指令指示所述跨链交易失败,则将所述关键字的状态恢复到执行所述子交易A前的状态,并删除所述跨链管理合约A中记录的所述关键字的状态A。
18.一种跨链交易装置,其特征在于,应用于具备可信执行环境的第一中继器,所述第一中继器对应第一区块链,所述装置包括:
发送单元,用于向第一节点发送用于指示执行第一子交易的第一指令,以及向第二中继器发送跨链交易的请求,其中,所述第一节点维护所述第一区块链,所述第二中继器对应第二区块链,所述跨链交易包括在所述第一区块链上执行的所述第一子交易和在所述第二区块链上执行的第二子交易;
接收单元,用于接收来自所述第一节点的所述第一子交易的执行结果,以及接收来自所述第二中继器的所述第二子交易的执行结果;
确定单元,用于在所述第一中继器的可信执行环境内,根据所述第一子交易的执行结果和所述第二子交易的执行结果确定所述跨链交易的执行结果。
19.根据权利要求18所述的装置,其特征在于,所述发送单元,还用于:
基于所述跨链交易的执行结果向所述第一节点发送第三指令;
其中,若所述跨链交易的执行结果指示所述跨链交易成功,所述第三指令用于指示所述跨链交易成功;
若所述跨链交易的执行结果指示所述跨链交易失败,所述第三指令用于指示所述跨链交易失败。
20.根据权利要求18或19所述的装置,其特征在于,所述发送单元,用于:
在所述第一中继器的可信执行环境内,采用所述第一中继器的私钥对所述跨链交易的请求进行签名,以得到第一签名数据;
向所述第二中继器发送所述第一签名数据。
21.根据权利要求18或19所述的装置,其特征在于,所述第一中继器保存有第一根证书,所述第一子交易的执行结果承载于第二签名数据,所述接收单元,还用于:
接收来自所述第一节点的所述第一节点的身份证书;
在所述第一中继器的可信执行环境内,采用所述第一根证书验证所述第一节点的身份证书,并在验证通过后从所述第一节点的身份证书中提取所述第一节点的公钥,以及采用所述第一节点的公钥验签所述第二签名数据以确定所述第二签名数据指示的所述第一子交易的执行结果是否可信。
22.根据权利要求18或19所述的装置,其特征在于,所述确定单元,还用于:
在所述第一中继器的可信执行环境内,基于所述第一子交易的执行结果确定所述第一子交易是否正确执行。
23.根据权利要求18或19所述的装置,其特征在于,所述第一中继器保存有第三根证书,所述第二子交易的执行结果承载于第四签名数据,所述接收单元,还用于:
接收来自所述第二中继器的所述第二中继器的身份证书;
在所述第一中继器的可信执行环境内,采用所述第三根证书验证所述第二中继器的身份证书,在验证通过后从所述第二中继器的身份证书中提取所述第二中继器的公钥,并采用所述第二中继器的公钥验签所述第四签名数据以确定所述第四签名数据指示的所述第二子交易的执行结果是否可信。
24.一种跨链交易装置,其特征在于,应用于节点A,所述节点A维护区块链A,所述节点A包括跨链管理合约A,所述装置包括:
接收单元,用于接收来自中继器A或节点C的用于指示执行子交易A的指令,其中,所述子交易A为所述区块链A与区块链B进行跨链交易时,由所述区块链A执行的子交易;所述中继器A为与所述节点A连接的中继器;所述节点C为区块链C上的共识节点,所述区块链C为所述区块链A和所述区块链B的中继链;
查询单元,用于在所述跨链管理合约A中查询是否存在所述跨链交易的关键字的记录;
发送单元,用于若存在所述关键字的记录,则向所述中继器A或所述节点C发送所述子交易A的第一执行结果,其中,所述子交易A的第一执行结果指示所述子交易A执行失败;
所述发送单元,还用于若不存在所述关键字的记录,则执行所述子交易A以得到所述关键字的状态A,并在所述跨链管理合约A中记录所述关键字的状态A,以及向所述中继器A或所述节点C发送所述子交易A的第二执行结果。
25.根据权利要求24所述的装置,其特征在于,所述接收单元,还用于:
接收来自所述中继器A或所述节点C的第三指令;
若所述第三指令指示所述跨链交易成功,则持久化所述关键字的状态A,并删除所述跨链管理合约A中记录的所述关键字的状态A;
若所述第三指令指示所述跨链交易失败,则将所述关键字的状态恢复到执行所述子交易A前的状态,并删除所述跨链管理合约A中记录的所述关键字的状态A。
26.一种具备可信执行环境的第一中继器,其特征在于,包括处理器、存储器、通信接口,以及一个或多个程序,所述一个或多个程序被存储在所述存储器中,并且被配置由所述处理器执行,所述程序包括用于执行如权利要求10-15任一项所述的方法中的步骤的指令。
27.一种节点A,其特征在于,包括处理器、存储器、通信接口,以及一个或多个程序,所述一个或多个程序被存储在所述存储器中,并且被配置由所述处理器执行,所述程序包括用于执行如权利要求16或17所述的方法中的步骤的指令。
28.一种芯片,其特征在于,包括:处理器,用于从存储器中调用并运行计算机程序,使得安装有所述芯片的设备执行如权利要求10-15或16或17中任一项所述的方法。
29.一种计算机可读存储介质,其特征在于,其存储用于电子数据交换的计算机程序,其中,所述计算机程序使得计算机执行如权利要求10-15或16或17中任一项所述的方法。
30.一种计算机程序,所述计算机程序使得计算机执行如权利要求10-15或16或17中任一项所述的方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011012791.1A CN114255031A (zh) | 2020-09-23 | 2020-09-23 | 用于执行交易的跨区块链的系统、跨链交易方法及设备 |
PCT/CN2021/118356 WO2022062976A1 (zh) | 2020-09-23 | 2021-09-14 | 用于执行交易的跨区块链的系统、跨链交易方法及设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011012791.1A CN114255031A (zh) | 2020-09-23 | 2020-09-23 | 用于执行交易的跨区块链的系统、跨链交易方法及设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114255031A true CN114255031A (zh) | 2022-03-29 |
Family
ID=80789868
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011012791.1A Pending CN114255031A (zh) | 2020-09-23 | 2020-09-23 | 用于执行交易的跨区块链的系统、跨链交易方法及设备 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN114255031A (zh) |
WO (1) | WO2022062976A1 (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114579595A (zh) * | 2022-05-06 | 2022-06-03 | 中国信息通信研究院 | 数据写入方法和装置、计算机可读存储介质、电子设备 |
CN116886444A (zh) * | 2023-09-05 | 2023-10-13 | 腾讯科技(深圳)有限公司 | 跨链数据处理方法、装置、计算机、存储介质及程序产品 |
WO2024001022A1 (zh) * | 2022-06-29 | 2024-01-04 | 蚂蚁区块链科技(上海)有限公司 | 跨子网调用 |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114785804B (zh) * | 2022-04-29 | 2024-03-29 | 蚂蚁区块链科技(上海)有限公司 | 用于跨区块链交互的系统及方法 |
CN114980023A (zh) * | 2022-06-02 | 2022-08-30 | 昆明理工大学 | 一种基于跨链技术的车联网数据共享方法 |
CN115051815B (zh) * | 2022-08-15 | 2022-12-02 | 江苏通付盾区块链科技有限公司 | 用于区块链异构链之间的跨链数据交互方法、装置 |
CN115085946B (zh) * | 2022-08-22 | 2022-11-04 | 航天信息股份有限公司 | 一种基于区块链的跨链身份验证方法及系统 |
CN117354050B (zh) * | 2023-12-04 | 2024-02-23 | 江西农业大学 | 一种融合知识图谱的智能合约恶意节点共谋行为检测方法 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111614656B (zh) * | 2018-11-16 | 2021-12-24 | 创新先进技术有限公司 | 跨链数据的可信管理方法及装置、电子设备 |
CN110008686B (zh) * | 2018-11-16 | 2020-12-04 | 创新先进技术有限公司 | 跨区块链的数据处理方法、装置、客户端、区块链系统 |
CN111008206A (zh) * | 2019-11-21 | 2020-04-14 | 深圳壹账通智能科技有限公司 | 跨链交易的状态数据的存储方法、装置及存储介质 |
CN111416808B (zh) * | 2020-03-13 | 2021-04-13 | 财付通支付科技有限公司 | 跨区块链的数据互存方法、装置、设备及存储介质 |
-
2020
- 2020-09-23 CN CN202011012791.1A patent/CN114255031A/zh active Pending
-
2021
- 2021-09-14 WO PCT/CN2021/118356 patent/WO2022062976A1/zh active Application Filing
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114579595A (zh) * | 2022-05-06 | 2022-06-03 | 中国信息通信研究院 | 数据写入方法和装置、计算机可读存储介质、电子设备 |
WO2024001022A1 (zh) * | 2022-06-29 | 2024-01-04 | 蚂蚁区块链科技(上海)有限公司 | 跨子网调用 |
CN116886444A (zh) * | 2023-09-05 | 2023-10-13 | 腾讯科技(深圳)有限公司 | 跨链数据处理方法、装置、计算机、存储介质及程序产品 |
CN116886444B (zh) * | 2023-09-05 | 2023-12-05 | 腾讯科技(深圳)有限公司 | 跨链数据处理方法、装置、计算机、存储介质及程序产品 |
Also Published As
Publication number | Publication date |
---|---|
WO2022062976A1 (zh) | 2022-03-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN114255031A (zh) | 用于执行交易的跨区块链的系统、跨链交易方法及设备 | |
CN110650189B (zh) | 一种基于中继的区块链的交互系统及方法 | |
US20220231869A1 (en) | Cross-blockchain mutual data storage | |
CN111461723B (zh) | 基于区块链的数据处理系统及方法、装置 | |
CN111598566A (zh) | 基于混合跨链的网络支付系统 | |
CN110009494B (zh) | 一种监控区块链中的交易内容的方法及装置 | |
US11861612B2 (en) | Blockchain-based offline resource transfer method and apparatus | |
JP2022544131A (ja) | 分散ブロックチェーントランザクションシステム | |
CN113328997A (zh) | 联盟链跨链系统及方法 | |
CN110505311A (zh) | 一种同构区块链跨链交互方法和系统 | |
CN113689216A (zh) | 跨链事务处理方法及装置、设备、存储介质、程序产品 | |
CN116827957B (zh) | 基于多区块链的信息处理方法、装置、设备以及介质 | |
US20230259930A1 (en) | Cross-chain transaction processing method and apparatus, electronic device, and storage medium | |
CN114244537B (zh) | 一种基于跨链通信和多链融合的信息处理系统 | |
CN115310974A (zh) | 一种跨链交易的处理方法、计算机设备及介质 | |
CN112130932B (zh) | 一种单实例运行的方法、装置及电子设备 | |
CN114217911A (zh) | 一种跨链事务处理方法、装置、计算设备和介质 | |
CN112508703A (zh) | 一种同构公有链价值交换方法 | |
CN116708463B (zh) | 基于多区块链的信息处理方法、装置、设备以及介质 | |
US20240104557A1 (en) | Method for transmitting specific data whose data format is unknown at relay from first blockchain network to second blockchain network and relay using the same | |
CN117032998B (zh) | 一种基于区块链的数据处理方法、装置以及可读存储介质 | |
CN114584293B (zh) | 一种基于TrustZone的区块链智能合约执行系统及方法 | |
CN116781337A (zh) | 一种区域股权交易存证跨链共识方法及系统 | |
CA3182400A1 (en) | Method, terminal, and coin register for transmitting electronic coin data sets | |
CN118138251A (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 |