CN117807157A - 区块链的交易执行方法、装置、程序产品、设备和介质 - Google Patents

区块链的交易执行方法、装置、程序产品、设备和介质 Download PDF

Info

Publication number
CN117807157A
CN117807157A CN202211174267.3A CN202211174267A CN117807157A CN 117807157 A CN117807157 A CN 117807157A CN 202211174267 A CN202211174267 A CN 202211174267A CN 117807157 A CN117807157 A CN 117807157A
Authority
CN
China
Prior art keywords
transaction
blockchain
virtual machine
proxy
application
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
Application number
CN202211174267.3A
Other languages
English (en)
Inventor
郭锐
王宗友
时一防
廖志勇
朱耿良
刘区城
刘汉卿
蓝虎
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Tencent Technology Shenzhen Co Ltd
Original Assignee
Tencent Technology Shenzhen Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN202211174267.3A priority Critical patent/CN117807157A/zh
Priority to PCT/CN2023/111719 priority patent/WO2024066749A1/zh
Priority to US18/379,583 priority patent/US20240104558A1/en
Publication of CN117807157A publication Critical patent/CN117807157A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/25Integrating or interfacing systems involving database management systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q40/00Finance; Insurance; Tax strategies; Processing of corporate or income taxes
    • G06Q40/04Trading; Exchange, e.g. stocks, commodities, derivatives or currency exchange

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Business, Economics & Management (AREA)
  • Accounting & Taxation (AREA)
  • Finance (AREA)
  • Computing Systems (AREA)
  • Computational Linguistics (AREA)
  • Development Economics (AREA)
  • Economics (AREA)
  • Marketing (AREA)
  • Strategic Management (AREA)
  • Technology Law (AREA)
  • General Business, Economics & Management (AREA)
  • Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)

Abstract

本申请公开了一种区块链的交易执行方法、装置、程序产品、设备和介质,该方法应用于第一区块链上的区块链节点,第一区块链上配置有用于执行第二区块链上交易的虚拟机;第一区块链上交易的结构和第二区块链上交易的结构不同,该方法包括:基于代理组件接收第一交易;第一交易是由代理组件对应用程序发起的第二交易进行组装得到的,应用程序基于第二区块链进行搭建,第一交易属于第一区块链上的交易,第二交易属于第二区块链上的交易;从第一交易中提取第二交易,并调用虚拟机执行第二交易;基于代理组件向应用程序返回对第二交易的执行结果。采用本申请,可提升交易执行的灵活性,并降低在第一区块链上执行第二区块链上交易的难度。

Description

区块链的交易执行方法、装置、程序产品、设备和介质
技术领域
本申请涉及区块链的技术领域,尤其涉及一种区块链的交易执行方法、装置、程序产品、设备和介质。
背景技术
在区块链的应用领域中,不同区块链上交易的结构通常是不同的,若一个应用程序是基于区块链a进行搭建的,则该应用程序发起的交易就属于区块链a上的交易。
当想要在区块链b上执行该应用程序发起的交易时,就需要对该应用程序进行改造,使得改造后的应用程序发起的交易能满足区块链b上交易的结构。但是,对应用程序进行改造其涉及的技术点多且难度大,导致想要实现在区块链b上执行区块链a上的交易并不容易。
发明内容
本申请提供了一种区块链的交易执行方法、装置、程序产品、设备和介质,可提升交易执行的灵活性,并降低在第一区块链上执行第二区块链上交易的难度。
本申请一方面提供了一种区块链的交易执行方法,该方法应用于第一区块链上的区块链节点,第一区块链上配置有用于执行第二区块链上交易的虚拟机;第一区块链上交易的结构和第二区块链上交易的结构不同,该方法包括:
基于代理组件接收第一交易;第一交易是由代理组件对应用程序发起的第二交易进行组装得到的,应用程序基于第二区块链进行搭建,第一交易属于第一区块链上的交易,第二交易属于第二区块链上的交易;
从第一交易中提取第二交易,并调用虚拟机执行第二交易;
基于代理组件向应用程序返回对第二交易的执行结果。
本申请一方面提供了一种区块链的交易执行装置,该装置应用于第一区块链上的区块链节点,第一区块链上配置有用于执行第二区块链上交易的虚拟机;第一区块链上交易的结构和第二区块链上交易的结构不同,该装置包括:
接收模块,用于基于代理组件接收第一交易;第一交易是由代理组件对应用程序发起的第二交易进行组装得到的,应用程序基于第二区块链进行搭建,第一交易属于第一区块链上的交易,第二交易属于第二区块链上的交易;
执行模块,用于从第一交易中提取第二交易,并调用虚拟机执行第二交易;
返回模块,用于基于代理组件向应用程序返回对第二交易的执行结果。
可选的,第一交易中组装有在第一区块链上需要调用的代理合约的标识信息;
执行模块从第一交易中提取第二交易,并调用虚拟机执行第二交易的方式,包括:
从第一交易中提取标识信息;
根据标识信息调用代理合约从第一交易中提取第二交易;
基于代理合约调用虚拟机执行提取的第二交易。
可选的,若第二交易基于虚拟机被执行完成,则第二交易的交易哈希被存储在代理合约中;
执行模块基于代理合约调用虚拟机执行提取的第二交易的方式,包括:
若检测到代理合约中未存储有交易哈希,则基于代理合约调用虚拟机执行提取的第二交易。
可选的,返回模块基于代理组件向应用程序返回对第二交易的执行结果的方式,包括:
在调用虚拟机对第二交易执行完成后,生成针对第二交易的交易回执;交易回执用于指示对第二交易的执行结果;
将交易回执与第二交易的交易哈希进行关联存储,并基于代理组件向应用程序返回交易哈希;
若基于代理组件接收到针对应用程序的回执查询信息,则从回执查询信息中提取交易哈希;
根据提取的交易哈希查询交易回执,并基于代理组件将查询的交易回执返回给应用程序。
可选的,上述装置还用于:
在调用虚拟机对第二交易执行完成后,将第二交易与交易哈希进行关联存储;
若基于代理组件接收到针对应用程序的交易查询信息,则从交易查询信息中提取交易哈希;
根据提取的交易哈希查询第二交易,并基于代理组件将查询的第二交易返回给应用程序。
可选的,代理组件是指以下任一种:
代理组件基于目标进程构成,目标进程不属于第一区块链和第二区块链;或者,
代理组件属于嵌入到第一区块链上的组件。
可选的,代理组件用于与第二区块链的交易接口进行对接,应用程序通过调用第二区块链的交易接口向代理组件发起第二交易。
可选的,第二交易具有应用程序的交易签名;执行模块调用虚拟机执行第二交易的方式,包括:
调用虚拟机基于交易签名对第二交易进行验证;
若验证成功,则调用虚拟机执行第二交易。
可选的,第二交易中组装有应用程序历史发起的交易数量;执行模块调用虚拟机执行第二交易的方式,包括:
调用虚拟机获取应用程序的账户信息,并根据账户信息确定应用程序历史发起的交易数量;
若第二交易中组装的交易数量与根据账户信息确定的交易数量相同,则调用虚拟机执行第二交易。
可选的,第二交易是应用程序所属的第一对象向第二对象转移目标资产的交易;执行模块调用虚拟机执行第二交易的方式,包括:
获取执行第二交易所需的激励资产;
获取第一对象的账户信息,并根据账户信息确定第一对象的账户剩余资产;
若激励资产与目标资产之和少于或等于账户剩余资产,则调用虚拟机执行第二交易。
可选的,虚拟机中创建有用于执行第二区块链上交易的交易合约;
执行模块调用虚拟机执行第二交易的方式,包括:
基于虚拟机调用交易合约执行第二交易。
本申请一方面提供了一种计算机设备,包括存储器和处理器,存储器存储有计算机程序,计算机程序被处理器执行时,使得处理器执行本申请中一方面中的方法。
本申请一方面提供了一种计算机可读存储介质,该计算机可读存储介质存储有计算机程序,该计算机程序包括程序指令,该程序指令被处理器执行时使该处理器执行上述一方面中的方法。
根据本申请的一个方面,提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述一方面等各种可选方式中提供的方法。
本申请中,第一区块链上可以配置有用于执行第二区块链上交易的虚拟机;第一区块链上交易的结构和第二区块链上交易的结构是不同的;第一区块链上的区块链节点可以基于代理组件接收第一交易;该第一交易是由代理组件对应用程序发起的第二交易进行组装得到的,该应用程序基于第二区块链进行搭建,第一交易属于第一区块链上的交易,第二交易属于第二区块链上的交易;第一区块链上的区块链节点还可以从第一交易中提取第二交易,并调用虚拟机执行第二交易,以及,基于代理组件向应用程序返回对第二交易的执行结果。由此可见,本申请提出的方法可以通过代理组件实现对应用程序与第一区块链间的相关交易转换和数据交互,并且,第一区块链上还可以配置有用于执行第二区块链上交易的虚拟机,因此,使得即使第一区块链上交易的结构和第二区块链上交易的结构不同,也可以实现在第一区块链上对第二区块链上交易的执行,提升了区块链执行不属于自身的交易的灵活性,并降低了区块链执行不属于自身的交易的难度。
附图说明
为了更清楚地说明本申请或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请提供的一种网络架构的结构示意图;
图2是本申请提供的一种执行交易的场景示意图;
图3是本申请提供的一种区块链的交易执行方法的流程示意图;
图4是本申请提供的一种发起交易的场景示意图;
图5是本申请提供的另一种网络架构的结构示意图;
图6是本申请提供的一种查询交易回执的场景示意图;
图7是本申请提供的一种交易执行的流程示意图;
图8是本申请提供的另一种交易执行的流程示意图;
图9是本申请提供的一种区块链的交易执行装置的结构示意图;
图10是本申请提供的一种计算机设备的结构示意图。
具体实施方式
下面将结合本申请中的附图,对本申请中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请涉及到区块链的相关技术。其中,区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。区块链(Blockchain),本质上是一个去中心化的数据库,是一串使用密码学方法相关联产生的数据块,每一个数据块中包含了一批次网络交易的信息,用于验证其信息的有效性(防伪)和生成下一个区块。区块链可以包括区块链底层平台、平台产品服务层以及应用服务层。区块链中包括一系列按照产生的先后时间顺序相互接续的区块(Block),新区块一旦加入到区块链中就不会再被移除,区块中记录了区块链系统中节点提交的记录数据。
本申请中,可以在不对一个区块链的应用程序进行改造的前提下,通过另一个区块链实现对该应用程序发起的交易的执行,减少了对应用程序的改造成本,降低了区块链执行不属于本链交易的难度。
本申请涉及到云技术。其中,云技术(Cloud Technology)是指在广域网或局域网内将硬件、软件、网络等系列资源统一起来,实现数据的计算、储存、处理和共享的一种托管技术。
云技术基于云计算商业模式应用的网络技术、信息技术、整合技术、管理平台技术、应用技术等的总称,可以组成资源池,按需所用,灵活便利。云计算技术将变成重要支撑。技术网络系统的后台服务需要大量的计算、存储资源,如视频网站、图片类网站和更多的门户网站。伴随着互联网行业的高度发展和应用,将来每个物品都有可能存在自己的识别标志,都需要传输到后台系统进行逻辑处理,不同程度级别的数据将会分开处理,各类行业数据皆需要强大的系统后盾支撑,只能通过云计算来实现。
本申请中所涉及到的云技术可以指应用程序、代理组件或者第一区块链上的区块链节点之间可以通过“云”进行数据交互。
首先,需要进行说明的是,本申请所采集的所有数据(如应用程序发起的交易相关的数据、对象的账户信息等数据)都可以是在该数据所属对象(如用户)同意并授权的情况下进行采集的,且相关数据的收集、使用和处理需要遵守相关国家和地区的相关法律法规和标准。
请参见图1,图1是本申请提供的一种网络架构的结构示意图。该网络架构可以包括两条区块链(如此处的第一区块链和第二区块链)、应用程序和代理层(可以是代理组件)。
其中,第一区块链和第二区块链可以是任意类型的区块链,第一区块链和第二区块链是两条不同的区块链,第一区块链上交易的结构和第二区块链上交易的结构是不同的。
第一区块链上可以具有多个区块链节点,第二区块链上也可以具有多个区块链节点,一个区块链节点可以是通过一个或者多个计算机设备构成的,该计算机设备可以是服务器或者其他设备。
该应用程序可以是基于第二区块链进行搭建,通过该应用程序发起的交易也属于第二区块链上的交易。该应用程序可以在终端设备中进行运行,该终端设备可以包括:智能手机、平板电脑、笔记本电脑、桌上型电脑、智能电视、车载终端等智能终端。
本申请中可以通过代理层实现在第一区块链上执行该应用程序发起的交易,请参见下述内容描述。
请一并参见图2,图2是本申请提供的一种执行交易的场景示意图。如图2所示,应用程序可以向代理层发起交易(如第二交易),该第二交易可以是应用程序发起的属于第二区块链的任意交易,应用程序可以将第二交易发送给代理层。
更多的,代理层可以是预先配置的可以与第二区块链的标准接口(如交易接口)进行对接的层,即代理层可以与第二区块链的标准接口相兼容,应用程序可以是直接调用第二区块链的该标准接口向代理层发起的第二交易。
进而,代理层可以对该第二交易进行重新组装,得到属于第一区块链上的第一交易,该第一交易中可以组装有第二交易,代理层如何通过第二交易组装得到第一交易的业务逻辑可以是预先配置好的。
代理层可以将组装的第一交易给到第一区块链上任意的区块链节点(即第一区块链上任意的区块链节点都可以执行后续的操作实现对第二交易的执行),该区块链节点中可以配置有代理合约(一种智能合约,用于实现对第二交易进行执行的相关业务处理),因此,区块链节点在获取到第一交易后,可以调用代理合约从该第一交易中提取出第二交易。
可选的,若代理层是不属于第一区块链的层,则代理层也可以被配置成可以兼容第一区块链的标准接口,代理层可以通过第一区块链的标准接口(如交易接口)将第一交易给到第一区块链上的区块链节点。
更多的,区块链节点(后续所提及的区块链节点都可以是指第一区块链上的区块链节点)中还可以配置有用于执行第二区块链上交易的虚拟机。因此,区块链节点还可以通过代理合约来调用该虚拟机执行提取出的第二交易,通过虚拟机对第二交易执行完成后,可以将与第二交易执行相关的业务数据(如交易回执)存储在代理合约中。
后续,区块链节点也可以再通过代理层向应用程序返回针对第二交易的执行结果(如第二交易的交易回执),该过程具体可以参见下述图3对应实施例中的相关内容。
采用本申请实施例提供的方法,在无需对基于第二区块链搭建的应用程序进行任意改造的前提下,应用程序可以按照原有的业务逻辑,通过第二区块链的标准接口向代理层发起交易(如第二交易),进而,代理层可以对该交易组装为第一区块链上交易的结构,并可以将组装的交易(如第一交易)给到代理合约按照相应的业务逻辑(如从第一交易中提取出第二交易,再调用虚拟机执行第二交易的相关业务逻辑)来实现对第二交易的执行,提升了在第一区块链上执行第二区块链上交易的灵活性和效率,并降低了在第一区块链上执行第二区块链上交易的难度。
请参见图3,图3是本申请提供的一种区块链的交易执行方法的流程示意图。本申请实施例中的执行主体可以是第一区块链上任意的区块链节点(如第一区块链上每个区块链节点都可以执行下述过程),一个区块链节点可以是由一个计算机设备构成,或者也可以是由多个计算机设备构成的计算机设备集群。该计算机设备可以是服务器,也可以终端设备或者其他设备等,对此不做限制。下述中,将本申请实施例中的执行主体统称为区块链节点(即第一区块链上的区块链节点)为例进行说明。如图3所示,该方法可以包括:
步骤S101,基于代理组件接收第一交易;第一交易是由代理组件对应用程序发起的第二交易进行组装得到的,应用程序基于第二区块链进行搭建,第一交易属于第一区块链上的交易,第二交易属于第二区块链上的交易。
可选的,应用程序(可以是DAPP,去中心化应用)可以是基于第二区块链进行搭建的,该第二区块链可以是任意类型的区块链,应用程序发起的交易就属于该第二区块链上的交易,应用程序发起的交易的格式就是该第二区块链上交易的格式。
可选的,该应用程序可以是任意形式的程序,如可以是网页形式的程序、软件形式的程序或者小程序形式的程序等。
其中,代理组件是预先配置的可以对接、兼容和适配第二区块链的相关接口(如交易接口,该交易接口可以用于发起第二区块链的相关交易)的组件。
应用程序可以调用第二区块链的相关接口,因此,应用程序可以是通过调用第二区块链的交易接口向代理组件发起的第二交易,该第二交易可以是应用程序发起的第二区块链上的任意交易,如该第二交易可以是进行资产转移的交易等。
可选的,代理组件可以是由单独的进程(可以称之为是目标进程)构成的,且该代理组件还可以包含配置的用于调用该目标进程的接口(可以称为代理接口),即代理组件可以是由该代理接口和目标进程构成的,此种情形下,代理组件既不属于第一区块链,也不属于第二区块链。
或者,代理组件还可以是嵌入到第一区块链上的组件(也可以包含在第一区块链上配置的相关接口和该接口可以调用的相关进程),此种情形下,代理组件就属于第一区块链。
请参见图4,图4是本申请提供的一种发起交易的场景示意图。如图4所示,对于方式1而言,代理组件可以包括代理接口和代理进程(即上述目标进程),通过该代理接口可以调用该代理进程,此种情形下,代理组件不属于第一区块链上的组件。
此时,基于第二区块链进行搭建的应用程序可以通过代理接口调用代理进程,以向代理进程发起第二交易,进而,代理进程可以对该第二交易进行重新组装,组装得到第一交易,代理进程可以将组装的该第一交易发送给第一区块链(如发送给第一区块链上任意的区块链节点),以完成向第一区块链发起第一交易的流程。
而对于方式2而言,代理组件是嵌入到第一区块链上的组件,因此,应用程序向代理组件发起第二交易后,第一区块链上的区块链节点直接基于该代理组件对第二交易进行组装即可得到发起的第一交易。
本申请中,需要在第一区块链上执行该第二交易,该第一区块链可以是不同于第二区块链的任意区块链。由于第一区块链和第二区块链是不同的区块链,第一区块链上交易的结构与第二区块链上交易的结构也是不同的,因此,在第一区块链上并不能直接执行该第二交易。
因此,代理组件在接收到应用程序发起的第二交易时,可以对该第二交易进行重新组装,以组装得到第一区块链上的交易(可以称为第一交易),该第一交易的结构就属于第一区块链上交易的结构。
可选的,第一交易的结构可以如下述表1所示:
表1
本申请中,在第一区块链上可以是通过代理合约(预先在第一区块链上配置的一种智能合约,用于实现对不是本区块链上交易的执行)实现对第二交易的执行,因此,第一交易可以是调用该代理合约的交易,第一交易中可以组装有需要调用的该代理合约的标识信息,由于该代理合约下可以包含多个代理方法(不同代理方法可以对应该代理合约不同的业务处理逻辑),因此,该标识信息可以包含该代理合约的ID(标识)和该代理合约下指定的代理方法。
因此,第二交易可以作为调用该代理合约的输入参数组装到第一交易中,即第一交易中可以组装有完整的第二交易。
进而,区块链节点就可以基于代理组件接收到第一交易。若代理组件是由单独的上述目标进程和代理接口构成,则该第一交易可以是由代理组件对接收到的第二交易进行重新组装后发送给区块链节点的;若该代理组件是嵌入到第一区块链上的组件,则该第一交易可以是区块链节点基于代理组件对接收到的第二交易进行重新组装得到。
其中,代理组件在接收到应用程序发起的第二交易后,将代理合约的相关标识信息和该第二交易一起组装到第一交易中的相关业务逻辑可以是预先对代理组件进行配置的。
上述代理合约是配置在第一区块链上的,第一区块链上的每个区块链节点中都可以配置有该代理合约。上述通过代理合约实现对不是本区块链(如第一区块链)上交易的执行的方法是一种优选的方式,通过代理合约可以优雅且灵活地实现在本区块链执行一个甚至多个其他区块链上交易的相关业务逻辑的适配,只需要对代理合约进行相应地配置即可。
或者,可选的,也可以不通过代理合约实现对不是本区块链上交易的执行,而是可以通过在第一区块链上配置相关的交易执行接口,通过该交易执行接口来实现对不是本区块链上交易的执行,此时上述第一交易就可以是用于调用该交易执行接口的交易,该第一交易中也可以组装有第二交易。
可选的,第二交易可以是转账的交易,第二交易的结构(或者是格式)可以如下述表2所示:
表2
其中,发送方已发送的交易数量即为应用程序所属对象已发送交易数量。
步骤S102,从第一交易中提取第二交易,并调用虚拟机执行第二交易。
可选的,若是通过代理合约实现对第二交易的执行,则区块链节点可以从第一交易中提取出需要调用的代理合约的上述标识信息,通过该标识信息就可以识别并调用对应的该代理合约从第一交易中提取出第二交易(该第二交易可以表示为二进制数据)。
更多的,第一区块链上可以配置有用于执行第二区块链上的交易的虚拟机,该虚拟机可以理解为是通过软件模拟的具有完整硬件系统功能的、运行在一个隔离环境中的、可以执行第二区块链上交易的完整计算机系统,在该虚拟机中可以识别和执行第二区块链的相关代码语言。
在调用代理合约从第一交易中提取出第二交易后,区块链节点就可以通过代理合约调用该虚拟机执行提取的该第二交易。
或者,若是通过上述配置的交易执行接口实现对第二交易的执行,则区块链节点可以通过第一交易调用该交易执行接口,通过调用该交易执行接口可以从第一交易中提取出第二交易,进而通过该交易执行接口可以再调用虚拟机解析并执行提取出的第二交易。
可选的,在调用虚拟机执行第二交易前,需要对第二交易进行相关的验证,验证通过(即验证成功),就可以调用虚拟机执行提取的第二交易,如下述内容描述。
第1种验证过程可以包括:需要进行说明的是,若第二交易基于虚拟机被执行成功,则第二交易的交易哈希(即第二交易的哈希值)就可以被存储在代理合约中。因此,代理合约可以对交易进行判重,包括:代理合约在调用虚拟机执行第二交易前,可以检测(即查询)代理合约中是否存储有第二交易的交易哈希,若检测到未存储有第二交易的交易哈希,表明在此之前还未执行过第二交易,则可以调用虚拟机执行提取的第二交易。
第2种验证过程可以包括:第二交易可以具有应用程序的交易签名,该交易签名可以是一起与第二交易给到代理组件,再由代理组件给到区块链节点的,区块链节点在调用虚拟机(如通过代理合约调用)执行第二交易前,可以调用虚拟机(如通过代理合约调用)通过该交易签名对第二交易进行验证(即验签),若对第二签名验证成功,则可以调用虚拟机执行第二交易。
其中,通过交易签名对第二交易进行验证的过程可以包括:交易签名可以是应用程序通过私钥(该私钥可以是应用程序所属的对象在第二区块链上的私钥,第二交易中可以携带该对象的公钥,该对象可以是在第二区块链上具有对象账户的任意用户、机构或者企业等)对第二交易的交易哈希进行加密得到。
因此,虚拟机可以对提取到的第二交易进行哈希计算,得到计算的哈希值,虚拟机还可以使用第二交易中应用程序的公钥(可以是应用程序所属对象在第二区块链上的公钥,该公钥和对象的私钥是一对密钥)对第二交易的交易签名进行解密,得到解密的哈希值。
进而,虚拟机可以对该计算的哈希值和解密的哈希值进行比对,若比对出相同,则可以确认对第二交易验证成功,反之,若比对出不相同,则可以确认对第二交易验证失败。
第3种验证过程可以包括:应用程序在生成第二交易时,可以将应用程序历史发起过的交易的总数量(即交易数量nonce)封装在该第二交易中,应用程序历史发起过的交易的总数量可以是指应用程序所属对象在应用程序中历史发起的交易的总数量,即在发起第二交易之前总共发起过的交易总数。
因此,区块链节点在调用虚拟机在执行第二交易之前,区块链节点可以调用虚拟机(如通过代理合约调用,若存在代理合约,则虚拟机执行的操作都可以是由代理合约进行调用执行)获取应用程序的账户信息(可以是应用程序所属对象的对象账户的账户信息),该账户信息可以包含应用程序历史发起过的交易数量,因此,虚拟机可以通过该账户信息确定应用程序历史发起的交易数量。
进而,虚拟机可以验证第二交易中封装的应用程序历史发起的交易数量与通过账户信息确定的应用程序历史发起的交易数量是否相同,若这两个交易数量相同,则可以调用虚拟机执行第二交易,若这两个交易数量不同,则表明第二交易不可信,就不会执行第二交易。
其中,第二区块链可以将对象的对象账户相关的账户信息给到第一区块链,即将对象在第二区块链上的相关账户信息转移到第一区块链上,使得结合上本申请的方法可以轻松且快捷地将应用程序所属的对象从第二区块链迁移到第一区块链。
第4种验证过程可以包括:可选的,第二交易可以是应用程序所属的对象(可以称为第一对象)向第二对象(在第二区块链上具有对象账户的、不同于第一对象的其他对象)转移目标资产(具体资产类型或者资产数量可以根据实际应用场景确定)的交易。因此,虚拟机可以获取执行第二交易所需的激励资产(gas),即区块链节点调用虚拟机执行第二交易的激励资产(如调用虚拟机中相关交易合约执行第二交易的激励资产)。
虚拟机还可以获取第一对象的账户信息,并可以通过该账户信息确定第一对象在第一区块链上的剩余资产(可以称为账户剩余资产)。可以理解的是,原本第一对象的资产可以是在第二区块链上的,但是第二区块链可以通过跨链的方式将第一对象的资产转移到第一区块链上。
因此,在执行第二交易时,需要保证执行第二交易所需的激励资产(包括调用虚拟机执行第二交易所需的激励资产)和目标资产的总和要少于或者等于第一对象的账户剩余资产。因此,虚拟机在确定执行第二交易所需的激励资产和目标资产的总和少于或者等于账户剩余资产时,表明对第一对象的账户剩余资产验证成功,就可以执行第二交易。
可选的,可以在上述4种验证过程中的全部验证过程或者部分验证过程满足条件且验证通过后,才调用虚拟机执行第二交易。
更多的,虚拟机中可以创建有用于执行第二区块链上交易的智能合约(可以称为交易合约),因此,在调用虚拟机执行第二交易时,可以通过虚拟机调用该交易合约来执行第二交易。
请参见图5,图5是本申请提供的一种网络架构的结构示意图。如图5所示,本申请中,网络架构可以包括应用层(如基于第二区块链进行搭建的应用程序,该应用程序可以是通过第二区块链的SDK(软件开发工具包)进行构建)、代理层(如代理组件,可以与第二区块链的接口进行对接)和核心链层(如第一区块链,可以配置有代理合约和虚拟机)。
其中,应用层可以向代理层发起交易(如第二交易),进而代理层可以对应用层发起的交易重新组装,并将重新组装的交易(如第一交易)给到核心链层,进而核心链层可以通过配置有的代理合约和虚拟机实现通过第一交易执行第二交易的过程。
步骤S103,基于代理组件向应用程序返回对第二交易的执行结果。
可选的,区块链节点可以基于代理组件向应用程序返回对第二交易的执行结果,如下述内容描述。
在调用虚拟机对第二交易执行完成后,虚拟机可以生成针对第二交易的交易回执,第二交易的交易回执可以是第二区块链格式(即第二区块链上回执的结构)的回执,该交易回执用于指示对第二交易的执行结果(如执行成功的结果或者执行失败的结果),该交易回执还可以记录有调用虚拟机执行第二交易所耗费的激励资产的数量(如gas数量)。
其中,执行第二交易所需的激励资产等于执行第二交易需要的gas数量(油量)乘以gas单价。
虚拟机可以将第二交易的交易回执给到代理合约进行存储,代理合约可以保存第二交易以及第二交易的交易回执。在调用虚拟机对第二交易执行完成后,代理合约还可以将第二交易的交易回执与第二交易的交易哈希进行关联存储(即记录第二交易的交易哈希到第二交易的交易回执的映射1),并可以将第二交易与第二交易的交易哈希进行关联存储(即记录第二交易的交易哈希到第二交易的映射2),该两个映射可以是属于代理合约包含的两个状态变量。
更多的,在调用虚拟机对第二交易执行完成后,代理合约还可以向区块链的接口层(RPC)返回第一交易执行完成,使得区块链节点可以生成针对第一交易的交易回执,该交易回执用于指示第一交易的执行结果(如执行成功的结果或者执行失败的结果),第一交易的交易回执还可以包含区块链节点执行第一交易花费的这部分激励资产的数量(如gas数量)。
其中,执行第一交易所需的激励资产等于执行第一交易需要的gas数量(油量)乘以gas单价。执行第一交易所需的资产可以包括调用代理合约执行第一交易(包括调用代理合约从第一交易中提取出第二交易以及通过代理合约调用虚拟机的相关流程等)所需的激励资产。其中,执行第一交易所需的激励资产可以由代理层(如代理组件)的管理员负责(支付)。
可以理解的是,合约执行的操作可以是通过区块链节点运行合约来执行的。
可选的,第一交易的交易回执的结构可以如下述表3所示:
表3
可选的,第二交易的交易回执的结构可以如下述表4所示:
表4
更多的,区块链节点可以将第一交易的交易回执给到代理组件,代理组件通过该交易回执确认第一交易被执行完成后,可以确认第二交易也被执行完成,代理组件可以计算第二交易的交易哈希,并可以将第二交易的交易哈希返回给应用程序。后续应用程序可以通过第二交易的交易哈希查询第二交易的交易回执,如下述内容描述。
应用程序在接收到第二交易的交易哈希后,可以通过该第二交易的交易哈希向代理组件发起查询第二交易的交易回执的请求,代理组件在接收到应用程序发起的查询第二交易的交易回执的请求时,可以将回执查询信息(包含第二交易的交易哈希)给到区块链节点,区块链节点可以从该回执查询信息中提取得到第二交易的交易哈希,并可以根据提取的该交易哈希在代理合约中查询与之进行关联存储的交易回执(即第二交易的交易回执)。
进而,区块链节点可以将查询到的交易回执给到代理组件,代理组件可以再将获取到的交易回执返回给应用程序,应用程序通过接收到的该交易回执即可确定第二交易的执行结果,并可以在应用界面展示针对第二交易的执行结果的相关提示信息(如也可以直接展示第二交易的交易回执)。
其中,代理组件可以是直接通过上述回执查询信息调用第一区块链相关的回执查询接口,以通过调用的该回执查询接口实现向区块链节点的代理合约查询第二交易的交易回执的目的。
请参见图6,图6是本申请提供的一种查询交易回执的场景示意图。如图6所示,在调用虚拟机对第二交易执行完成后,代理合约中可以记录第二交易的交易哈希到第二交易的交易回执的映射,并可以记录第二交易的交易哈希到第二交易的映射。并且,在调用虚拟机对第二交易执行完成后,应用程序也可以获取到代理组件返回的第二交易的交易哈希。
因此,应用程序可以通过该第二交易的交易哈希向代理组件发起查询第二交易的交易回执的请求。代理组件在接收到该查询交易回执的请求后,也可以通过第二交易的交易哈希向代理合约查询第二交易的交易回执。
代理合约可以根据代理组件给到的第二交易的交易哈希查询与之映射的交易回执(即第二交易的交易回执),进而,代理合约就可以向代理组件返回查询到第二交易的交易回执。
接着,代理组件也可以将代理合约给到的交易回执再返回给应用程序,使得应用程序就可以获取到第二交易的交易回执,通过该交易回执也可以确定第二交易被执行的结果,应用程序还可以在前端向所属对象展示接收到的第二交易的交易回执。
更多的,应用程序还可以向代理组件发起针对第二交易的查询请求,代理组件在接收到该查询请求后,可以将交易查询信息(包含第二交易的交易哈希)给到区块链节点,区块链节点可以从该交易查询信息中提取出第二交易的交易哈希,进而,区块链节点可以根据提取的交易哈希在代理合约中查询与之进行关联存储的交易(即第二交易)。
接着,区块链节点可以将查询到的第二交易给到代理组件,代理组件可以再将获取到的第二交易返回给应用程序,应用程序可以在应用界面展示接收到的第二交易。
同理,代理组件可以是直接通过上述交易查询信息调用第一区块链相关的交易查询接口,以通过调用的该交易查询接口实现向区块链节点的代理合约查询第二交易的目的。
本申请的方法可以服务于第二区块链生态下的任意应用程序(即通过第二区块链搭建的应用程序)。开发人员可以利用第二区块链现有生态下的工具,快速构建一个DAPP(去中心化应用程序,即指上述应用程序),构建的该DAPP发起的交易也可以在其他区块链(如第一区块链)上执行,使得构建的该DAPP的用户可以快速被迁移到其他的区块链(如第一区块链)上。
此外,新链(如第一区块链)可以兼容第二区块链的标准接口(如交易接口),并可以接收第二区块链格式的交易(如第二交易)并执行,第二区块链的开发人员无需理解新链(如第一区块链)的API接口(应用程序编程接口),因此无需对应用程序进行任何改造,而是可以直接使用应用程序原有的业务逻辑,便于快速迁移第二区块链生态下的应用和用户。
本申请中,第一区块链上可以配置有用于执行第二区块链上交易的虚拟机;第一区块链上交易的结构和第二区块链上交易的结构是不同的;第一区块链上的区块链节点可以基于代理组件接收第一交易;该第一交易是由代理组件对应用程序发起的第二交易进行组装得到的,该应用程序基于第二区块链进行搭建,第一交易属于第一区块链上的交易,第二交易属于第二区块链上的交易;第一区块链上的区块链节点还可以从第一交易中提取第二交易,并调用虚拟机执行第二交易,以及,基于代理组件向应用程序返回对第二交易的执行结果。由此可见,本申请提出的方法可以通过代理组件实现对应用程序与第一区块链间的相关交易转换和数据交互,并且,第一区块链上还可以配置有用于执行第二区块链上交易的虚拟机,因此,使得即使第一区块链上交易的结构和第二区块链上交易的结构不同,也可以实现在第一区块链上对第二区块链上交易的执行,提升了区块链执行不属于自身的交易的灵活性,并降低了区块链执行不属于自身的交易的难度。
下述以应用程序是钱包应用为例对交易执行的过程进行具体的举例说明。请参见图7,图7是本申请提供的一种交易执行的流程示意图。如图7所示,该流程可以包括:
1.此处,钱包应用可以是上述通过第二区块链进行搭建的应用程序,通过该钱包应用可以实现转账的交易。用户可以是钱包应用所属的对象,该钱包应用可以是运行在用户的终端设备中的。用户可以在钱包应用的应用界面上点击转账(如点击转账控件),并输入与交易执行相关的合约地址,该合约地址可以是用户自行输入的,也可以是钱包应用根据用户执行的合约调用操作自动填入的,该合约地址可以是在虚拟机中执行转账的交易时需要调用的智能合约的地址。用户通过在钱包应用中点击转账可以在钱包应用中发起转账的交易(即上述第二交易)。可选的,若转账时无需调用相应的智能合约,则也可以输入接收转账的对象的账户地址。
2.钱包应用获取到用户点击转账的操作后,可以调用第二区块链的相关接口(如获取合约信息的接口,可以记为getCode),向代理层(即上述代理组件)获取上述合约地址所指示的智能合约的合约(如上述交易合约)的信息。
3.代理层可以向核心链层(即上述第一区块链)获取上述合约地址所指示的智能合约的合约(如上述交易合约)的信息。
4.核心链层可以根据该合约地址查询对应智能合约的合约信息,并可以将查询到的合约信息返回给代理层,该合约信息可以包含对应智能合约的合约代码。
5.代理层可以向钱包应用返回合约代码。
6.钱包应用在获取到合约代码后,可以根据该合约代码校验上述第1个步骤中输入的是否是合约地址,若该合约代码不为空,即可确认上述第1个步骤中输入的确实是合约地址,钱包应用可以在应用界面展示校验结果(如校验结果可以是需要调用对应智能合约的结果)。
7.上述1~6的步骤主要是为了确认步骤1中输入的地址是合约地址还是外部账户地址(如第二对象的账户地址),若确认是合约地址,则钱包应用可以在应用界面展示该合约地址对应合约的相关信息,若确认是账户地址,则钱包应用可以在应用界面展示向该账户地址转账的相关信息。确认之后,钱包应用可以调用第二区块链的相关接口(如获取预估gas(油量)的接口,可以记为estimateGas),向代理层获取预估的gas数量。
8.代理层可以根据预先配置的相关算法预估钱包应用发起的转账交易所需的gas数量,并可以将计算的gas数量返回给钱包应用。
9.接着,钱包应用可以调用第二区块链的相关接口(如获取gas价格的接口,可以记为gasPrice)向代理层获取预估的gas的价格(可以理解为gas的单价)。
10.代理层可以向钱包应用返回预估的gas的价格。
11.用户可以在钱包应用中针对此次转账交易所需耗费的激励资产设置默认的上限。
12.钱包应用可以显示转账页面,以展示给用户。
13.用户可以在转账页面输入转账的金额(如上述目标资产的数量)、相关的gas信息(如需要花费的激励资产的数量),并点击下一步。
14.钱包应用可以在应用页面显示针对用户当前发起的转账交易的确认信息,以让用户对其进行确认。
15.用户对钱包应用显示的确认信息点击确认。
16.钱包应用可以调用第二区块链的相关接口(如获取账户信息的接口,可以记为getTransactionCount),向代理层获取用户(即钱包应用所属对象)在此之前已发送的交易数量。
17.代理层可以向核心链层(如向核心链层中的区块链节点)获取用户(即钱包应用所属对象)在此之前已发送的交易数量。
18.核心链层可以向代理层返回用户(即钱包应用所属对象)在此之前已发送的交易数量。
19.代理层可以向钱包应用返回地址(可以理解为是用户的账户地址)发送的交易数量,即用户(即钱包应用所属对象)在此之前已发送的交易数量。
20.钱包应用可以调用第二区块链的相关接口(如发起交易的接口,可以记为sendRawTransaction),向代理层发起裸交易(即上述第二交易),该裸交易中可以封装有用户当前已经发送的交易的总数量nonce。
21.代理层可以调用代理合约发送裸交易,其方法可以是:代理层可以将需要调用的代理合约的标识信息与该裸交易及其他相关信息一起进行组装,得到上述第一交易,将第一交易发送给核心链层。
22.核心链层在拿到第一交易后,就可以调用代理合约执行该第一交易,执行第一交易就包含需要调用虚拟机执行第一交易中封装的第二交易。
23.通过调用虚拟机对第二交易执行完成后,第一交易也被执行完成,核心链层可以向代理层返回第一交易成功执行的提示信息,如可以返回第一交易的交易回执。
24.代理层在接收到核心链层返回的第一交易被成功执行的提示信息时,可以向钱包应用返回裸交易的交易hash(即交易哈希)。
25.钱包应用可以调用第二区块链的相关接口(如回执查询的接口,可以记为getTransactionReceipt)通过裸交易的交易哈希向代理层查询裸交易的交易回执。
26.代理层可以通过裸交易的交易哈希调用代理合约向核心链层读取对应的交易回执(该交易回执与该交易哈希之间具有映射关系)。
27.核心链层可以将读取到的交易回执返回给代理层。
28.代理层可以将接收到的交易回执再返回给钱包应用。
29.钱包应用可以通过弹窗的形式(或者也可以是其他形式)向用户提示交易结果,该交易结果就是交易回执所指示的裸交易的执行结果,如交易失败的结果或者交易成功的结果,即转账失败或者转账成功的结果。
本申请提出的方法可以通过代理组件实现对应用程序与第一区块链间的相关交易转换和数据交互,并且,第一区块链上还可以配置有用于执行第二区块链上交易的虚拟机,因此,使得即使第一区块链上交易的结构和第二区块链上交易的结构不同,也可以实现在第一区块链上对第二区块链上交易的执行,提升了区块链执行不属于自身的交易的灵活性,并降低了区块链执行不属于自身的交易的难度。
请参见图8,图8是本申请提供的另一种交易执行的流程示意图。如图8所示,该流程可以包括:
1.此处Actor可以是指应用程序,该应用程序可以被用户进行操作,该应用程序可以是基于第二区块链进行搭建。应用程序可以调用第二区块链的相关接口向代理层(即代理组件)发起交易rawTx(即第二交易)。
2.代理层可以向核心链RPC(核心链的接口层)发送交易,此处发送的交易可以是指第一交易,该第一交易可以包含代理合约的ID(标识)、代理合约下需要调用的代理方法(即合约方法)以及交易rawTx。
3.核心链RPC在接收到第一交易后,可以根据该第一交易中代理合约的ID(标识)、代理合约下需要调用的代理方法(即合约方法)以及交易rawTx,调用该代理合约下的该代理方法,调用该代理合约的代理方法的输入参数即为交易rawTx。
4.代理合约可以对该交易rawTx进行判重,即判断之前是否执行过该交易rawTx,若未执行过,则可以接着进行下述操作。
5.代理合约可以调用虚拟机执行从第一交易中提取出的交易rawTx。
6.虚拟机在执行交易rawTx之前,可以对交易rawTx进行验证,验签通过,则可以执行下述步骤7。
7.虚拟机还可以对该交易rawTx中的交易数量nonce进行校验,以及对应用程序所属对象的账户余额(即上述账户剩余资产)进行校验,若都校验成功,则可以执行下述步骤8。
8.虚拟机可以执行交易rawTx。
9.虚拟机在对交易rawTx执行完成后,可以向代理合约返回交易rawTx的交易回执。
10.代理合约可以保存交易rawTx以及交易rawTx的交易回执。
11.代理合约可以向核心链RPC返回第一交易和第二交易执行完成。
12.核心链RPC可以向代理层返回原生交易回执(即第一交易的交易回执)。
13.代理层在确认第一交易执行完成后,第二交易也可以确认执行完成(第一交易可以是调用代理合约通过相应的业务逻辑执行第二交易的交易),代理层可以向应用程序返回裸交易(即第二交易)的交易哈希,使得后续应用程序就可以通过该交易哈希来查询第二交易的交易回执和第二交易,第二交易的交易哈希在代理合约中既可以映射到第二交易的交易回执,也可以映射到第二交易。
本申请提出的方法可以通过代理组件实现对应用程序与第一区块链间的相关交易转换和数据交互,并且,第一区块链上还可以配置有用于执行第二区块链上交易的虚拟机,因此,使得即使第一区块链上交易的结构和第二区块链上交易的结构不同,也可以实现在第一区块链上对第二区块链上交易的执行,提升了区块链执行不属于自身的交易的灵活性,并降低了区块链执行不属于自身的交易的难度。
请参见图9,图9是本申请提供的一种区块链的交易执行装置的结构示意图。该区块链的交易执行装置可以是运行于计算机设备中的一个计算机程序(包括程序代码),例如该区块链的交易执行装置为一个应用软件,该区块链的交易执行装置可以用于执行本申请实施例提供的方法中的相应步骤。该装置可以应用于第一区块链上的区块链节点,第一区块链上配置有用于执行第二区块链上交易的虚拟机;第一区块链上交易的结构和第二区块链上交易的结构不同。如图9所示,该区块链的交易执行装置1可以包括:接收模块11、执行模块12和返回模块13。
接收模块11,用于基于代理组件接收第一交易;第一交易是由代理组件对应用程序发起的第二交易进行组装得到的,应用程序基于第二区块链进行搭建,第一交易属于第一区块链上的交易,第二交易属于第二区块链上的交易;
执行模块12,用于从第一交易中提取第二交易,并调用虚拟机执行第二交易;
返回模块13,用于基于代理组件向应用程序返回对第二交易的执行结果。
可选的,第一交易中组装有在第一区块链上需要调用的代理合约的标识信息;
执行模块12从第一交易中提取第二交易,并调用虚拟机执行第二交易的方式,包括:
从第一交易中提取标识信息;
根据标识信息调用代理合约从第一交易中提取第二交易;
基于代理合约调用虚拟机执行提取的第二交易。
可选的,若第二交易基于虚拟机被执行完成,则第二交易的交易哈希被存储在代理合约中;
执行模块12基于代理合约调用虚拟机执行提取的第二交易的方式,包括:
若检测到代理合约中未存储有交易哈希,则基于代理合约调用虚拟机执行提取的第二交易。
可选的,返回模块13基于代理组件向应用程序返回对第二交易的执行结果的方式,包括:
在调用虚拟机对第二交易执行完成后,生成针对第二交易的交易回执;交易回执用于指示对第二交易的执行结果;
将交易回执与第二交易的交易哈希进行关联存储,并基于代理组件向应用程序返回交易哈希;
若基于代理组件接收到针对应用程序的回执查询信息,则从回执查询信息中提取交易哈希;
根据提取的交易哈希查询交易回执,并基于代理组件将查询的交易回执返回给应用程序。
可选的,上述装置1还用于:
在调用虚拟机对第二交易执行完成后,将第二交易与交易哈希进行关联存储;
若基于代理组件接收到针对应用程序的交易查询信息,则从交易查询信息中提取交易哈希;
根据提取的交易哈希查询第二交易,并基于代理组件将查询的第二交易返回给应用程序。
可选的,代理组件是指以下任一种:
代理组件基于目标进程构成,目标进程不属于第一区块链和第二区块链;或者,
代理组件属于嵌入到第一区块链上的组件。
可选的,代理组件用于与第二区块链的交易接口进行对接,应用程序通过调用第二区块链的交易接口向代理组件发起第二交易。
可选的,第二交易具有应用程序的交易签名;执行模块12调用虚拟机执行第二交易的方式,包括:
调用虚拟机基于交易签名对第二交易进行验证;
若验证成功,则调用虚拟机执行第二交易。
可选的,第二交易中组装有应用程序历史发起的交易数量;执行模块12调用虚拟机执行第二交易的方式,包括:
调用虚拟机获取应用程序的账户信息,并根据账户信息确定应用程序历史发起的交易数量;
若第二交易中组装的交易数量与根据账户信息确定的交易数量相同,则调用虚拟机执行第二交易。
可选的,第二交易是应用程序所属的第一对象向第二对象转移目标资产的交易;执行模块12调用虚拟机执行第二交易的方式,包括:
获取执行第二交易所需的激励资产;
获取第一对象的账户信息,并根据账户信息确定第一对象的账户剩余资产;
若激励资产与目标资产之和少于或等于账户剩余资产,则调用虚拟机执行第二交易。
可选的,虚拟机中创建有用于执行第二区块链上交易的交易合约;
执行模块12调用虚拟机执行第二交易的方式,包括:
基于虚拟机调用交易合约执行第二交易。
根据本申请的一个实施例,图3所示的区块链的交易执行方法所涉及的步骤可由图9所示的区块链的交易执行装置1中的各个模块来执行。例如,图3中所示的步骤S101可由图9中的接收模块11来执行,图3中所示的步骤S102可由图9中的执行模块12来执行;图3中所示的步骤S103可由图9中的返回模块13来执行。
本申请中,第一区块链上可以配置有用于执行第二区块链上交易的虚拟机;第一区块链上交易的结构和第二区块链上交易的结构是不同的;第一区块链上的区块链节点可以基于代理组件接收第一交易;该第一交易是由代理组件对应用程序发起的第二交易进行组装得到的,该应用程序基于第二区块链进行搭建,第一交易属于第一区块链上的交易,第二交易属于第二区块链上的交易;第一区块链上的区块链节点还可以从第一交易中提取第二交易,并调用虚拟机执行第二交易,以及,基于代理组件向应用程序返回对第二交易的执行结果。由此可见,本申请提出的装置可以通过代理组件实现对应用程序与第一区块链间的相关交易转换和数据交互,并且,第一区块链上还可以配置有用于执行第二区块链上交易的虚拟机,因此,使得即使第一区块链上交易的结构和第二区块链上交易的结构不同,也可以实现在第一区块链上对第二区块链上交易的执行,提升了区块链执行不属于自身的交易的灵活性,并降低了区块链执行不属于自身的交易的难度。
根据本申请的一个实施例,图9所示的区块链的交易执行装置1中的各个模块可以分别或全部合并为一个或若干个单元来构成,或者其中的某个(些)单元还可以再拆分为功能上更小的多个子单元,可以实现同样的操作,而不影响本申请的实施例的技术效果的实现。上述模块是基于逻辑功能划分的,在实际应用中,一个模块的功能也可以由多个单元来实现,或者多个模块的功能由一个单元实现。在本申请的其它实施例中,区块链的交易执行装置1也可以包括其它单元,在实际应用中,这些功能也可以由其它单元协助实现,并且可以由多个单元协作实现。
根据本申请的一个实施例,可以通过在包括中央处理单元(CPU)、随机存取存储介质(RAM)、只读存储介质(ROM)等处理元件和存储元件的例如计算机的通用计算机设备上运行能够执行如图3中所示的相应方法所涉及的各步骤的计算机程序(包括程序代码),来构造如图9中所示的区块链的交易执行装置1,以及来实现本申请实施例的区块链的交易执行方法。上述计算机程序可以记载于例如计算机可读记录介质上,并通过计算机可读记录介质装载于上述计算设备中,并在其中运行。
请参见图10,图10是本申请提供的一种计算机设备的结构示意图。如图10所示,计算机设备1000可以包括:处理器1001,网络接口1004和存储器1005,此外,计算机设备1000还可以包括:用户接口1003,和至少一个通信总线1002。其中,通信总线1002用于实现这些组件之间的连接通信。其中,用户接口1003可以包括显示屏(Display)、键盘(Keyboard),可选用户接口1003还可以包括标准的有线接口、无线接口。网络接口1004可选的可以包括标准的有线接口、无线接口(如WI-FI接口)。存储器1005可以是高速RAM存储器,也可以是非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器。存储器1005可选的还可以是至少一个位于远离前述处理器1001的存储装置。如图10所示,作为一种计算机存储介质的存储器1005中可以包括操作系统、网络通信模块、用户接口模块以及设备控制应用程序。
在图10所示的计算机设备1000中,网络接口1004可提供网络通讯功能;而用户接口1003主要用于为用户提供输入的接口;而处理器1001可以用于调用存储器1005中存储的设备控制应用程序,以实现:
基于代理组件接收第一交易;第一区块链上配置有用于执行第二区块链上交易的虚拟机;第一区块链上交易的结构和第二区块链上交易的结构不同;第一交易是由代理组件对应用程序发起的第二交易进行组装得到的,应用程序基于第二区块链进行搭建,第一交易属于第一区块链上的交易,第二交易属于第二区块链上的交易;
从第一交易中提取第二交易,并调用虚拟机执行第二交易;
基于代理组件向应用程序返回对第二交易的执行结果。
应当理解,本申请实施例中所描述的计算机设备1000可执行前文图3对应实施例中对上述区块链的交易执行方法的描述,也可执行前文图9所对应实施例中对上述区块链的交易执行装置1的描述,在此不再赘述。另外,对采用相同方法的有益效果描述,也不再进行赘述。
此外,这里需要指出的是:本申请还提供了一种计算机可读存储介质,且计算机可读存储介质中存储有前文提及的区块链的交易执行装置1所执行的计算机程序,且计算机程序包括程序指令,当处理器执行程序指令时,能够执行前文图3所对应实施例中对区块链的交易执行方法的描述,因此,这里将不再进行赘述。另外,对采用相同方法的有益效果描述,也不再进行赘述。对于本申请所涉及的计算机存储介质实施例中未披露的技术细节,请参照本申请方法实施例的描述。
作为示例,上述程序指令可被部署在一个计算机设备上执行,或者被部署位于一个地点的多个计算机设备上执行,又或者,在分布在多个地点且通过通信网络互连的多个计算机设备上执行,分布在多个地点且通过通信网络互连的多个计算机设备可以组成区块链网络。
上述计算机可读存储介质可以是前述任一实施例提供的区块链的交易执行装置或者上述计算机设备的内部存储单元,例如计算机设备的硬盘或内存。该计算机可读存储介质也可以是该计算机设备的外部存储设备,例如该计算机设备上配备的插接式硬盘,智能存储卡(smart media card,SMC),安全数字(secure digital,SD)卡,闪存卡(flashcard)等。进一步地,该计算机可读存储介质还可以既包括该计算机设备的内部存储单元也包括外部存储设备。该计算机可读存储介质用于存储该计算机程序以及该计算机设备所需的其他程序和数据。该计算机可读存储介质还可以用于暂时地存储已经输出或者将要输出的数据。
本申请提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行前文图3对应实施例中对上述区块链的交易执行方法的描述,因此,这里将不再进行赘述。另外,对采用相同方法的有益效果描述,也不再进行赘述。对于本申请所涉及的计算机可读存储介质实施例中未披露的技术细节,请参照本申请方法实施例的描述。
本申请实施例的说明书和权利要求书及附图中的术语“第一”、“第二”等是用于区别不同对象,而非用于描述特定顺序。此外,术语“包括”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、装置、产品或设备没有限定于已列出的步骤或模块,而是可选地还包括没有列出的步骤或模块,或可选地还包括对于这些过程、方法、装置、产品或设备固有的其他步骤单元。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
本申请实施例提供的方法及相关装置是参照本申请实施例提供的方法流程图和/或结构示意图来描述的,具体可由计算机程序指令实现方法流程图和/或结构示意图的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。这些计算机程序指令可提供到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或结构示意图一个方框或多个方框中指定的功能的装置。这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或结构示意图一个方框或多个方框中指定的功能。这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或结构示意一个方框或多个方框中指定的功能的步骤。
以上所揭露的仅为本申请较佳实施例而已,当然不能以此来限定本申请之权利范围,因此依本申请权利要求所作的等同变化,仍属本申请所涵盖的范围。

Claims (15)

1.一种区块链的交易执行方法,其特征在于,所述方法应用于第一区块链上的区块链节点,所述第一区块链上配置有用于执行第二区块链上交易的虚拟机;所述第一区块链上交易的结构和所述第二区块链上交易的结构不同;所述方法包括:
基于代理组件接收第一交易;所述第一交易是由所述代理组件对应用程序发起的第二交易进行组装得到的,所述应用程序基于所述第二区块链进行搭建,所述第一交易属于所述第一区块链上的交易,所述第二交易属于所述第二区块链上的交易;
从所述第一交易中提取所述第二交易,并调用所述虚拟机执行所述第二交易;
基于所述代理组件向所述应用程序返回对所述第二交易的执行结果。
2.根据权利要求1所述的方法,其特征在于,所述第一交易中组装有在所述第一区块链上需要调用的代理合约的标识信息;
所述从所述第一交易中提取所述第二交易,并调用所述虚拟机执行所述第二交易,包括:
从所述第一交易中提取所述标识信息;
根据所述标识信息调用所述代理合约从所述第一交易中提取所述第二交易;
基于所述代理合约调用所述虚拟机执行提取的所述第二交易。
3.根据权利要求2所述的方法,其特征在于,若所述第二交易基于所述虚拟机被执行完成,则所述第二交易的交易哈希被存储在所述代理合约中;
所述基于所述代理合约调用所述虚拟机执行提取的所述第二交易,包括:
若检测到所述代理合约中未存储有所述交易哈希,则基于所述代理合约调用所述虚拟机执行提取的所述第二交易。
4.根据权利要求1所述的方法,其特征在于,所述基于所述代理组件向所述应用程序返回对所述第二交易的执行结果,包括:
在调用所述虚拟机对所述第二交易执行完成后,生成针对所述第二交易的交易回执;所述交易回执用于指示对所述第二交易的执行结果;
将所述交易回执与所述第二交易的交易哈希进行关联存储,并基于所述代理组件向所述应用程序返回所述交易哈希;
若基于所述代理组件接收到针对所述应用程序的回执查询信息,则从所述回执查询信息中提取所述交易哈希;
根据提取的所述交易哈希查询所述交易回执,并基于所述代理组件将查询的所述交易回执返回给所述应用程序。
5.根据权利要求4所述的方法,其特征在于,所述方法还包括:
在调用所述虚拟机对所述第二交易执行完成后,将所述第二交易与所述交易哈希进行关联存储;
若基于所述代理组件接收到针对所述应用程序的交易查询信息,则从所述交易查询信息中提取所述交易哈希;
根据提取的所述交易哈希查询所述第二交易,并基于所述代理组件将查询的所述第二交易返回给所述应用程序。
6.根据权利要求1所述的方法,其特征在于,所述代理组件是指以下任一种:
所述代理组件基于目标进程构成,所述目标进程不属于所述第一区块链和所述第二区块链;或者,
所述代理组件属于嵌入到所述第一区块链上的组件。
7.根据权利要求1所述的方法,其特征在于,所述代理组件用于与所述第二区块链的交易接口进行对接,所述应用程序通过调用所述第二区块链的交易接口向所述代理组件发起所述第二交易。
8.根据权利要求1所述的方法,其特征在于,所述第二交易具有所述应用程序的交易签名;所述调用所述虚拟机执行所述第二交易,包括:
调用所述虚拟机基于所述交易签名对所述第二交易进行验证;
若验证成功,则调用所述虚拟机执行所述第二交易。
9.根据权利要求1所述的方法,其特征在于,所述第二交易中组装有所述应用程序历史发起的交易数量;所述调用所述虚拟机执行所述第二交易,包括:
调用所述虚拟机获取所述应用程序的账户信息,并根据所述账户信息确定所述应用程序历史发起的交易数量;
若所述第二交易中组装的交易数量与根据所述账户信息确定的交易数量相同,则调用所述虚拟机执行所述第二交易。
10.根据权利要求1所述的方法,其特征在于,所述第二交易是所述应用程序所属的第一对象向第二对象转移目标资产的交易;所述调用所述虚拟机执行所述第二交易,包括:
获取执行所述第二交易所需的激励资产;
获取所述第一对象的账户信息,并根据所述账户信息确定所述第一对象的账户剩余资产;
若所述激励资产与所述目标资产之和少于或等于所述账户剩余资产,则调用所述虚拟机执行所述第二交易。
11.根据权利要求1所述的方法,其特征在于,所述虚拟机中创建有用于执行所述第二区块链上交易的交易合约;
所述调用所述虚拟机执行所述第二交易,包括:
基于所述虚拟机调用所述交易合约执行所述第二交易。
12.一种区块链的交易执行装置,其特征在于,所述装置应用于第一区块链上的区块链节点,所述第一区块链上配置有用于执行第二区块链上交易的虚拟机;所述第一区块链上交易的结构和所述第二区块链上交易的结构不同;所述装置包括:
接收模块,用于基于代理组件接收第一交易;所述第一交易是由所述代理组件对应用程序发起的第二交易进行组装得到的,所述应用程序基于所述第二区块链进行搭建,所述第一交易属于所述第一区块链上的交易,所述第二交易属于所述第二区块链上的交易;
执行模块,用于从所述第一交易中提取所述第二交易,并调用所述虚拟机执行所述第二交易;
返回模块,用于基于所述代理组件向所述应用程序返回对所述第二交易的执行结果。
13.一种计算机程序产品,包括计算机程序/指令,该计算机程序/指令被处理器执行时实现权利要求1-11任一项所述方法的步骤。
14.一种计算机设备,其特征在于,包括存储器和处理器,所述存储器存储有计算机程序,所述计算机程序被所述处理器执行时,使得所述处理器执行权利要求1-11中任一项所述方法的步骤。
15.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,所述计算机程序适用于由处理器加载并执行权利要求1-11任一项所述的方法。
CN202211174267.3A 2022-09-26 2022-09-26 区块链的交易执行方法、装置、程序产品、设备和介质 Pending CN117807157A (zh)

Priority Applications (3)

Application Number Priority Date Filing Date Title
CN202211174267.3A CN117807157A (zh) 2022-09-26 2022-09-26 区块链的交易执行方法、装置、程序产品、设备和介质
PCT/CN2023/111719 WO2024066749A1 (zh) 2022-09-26 2023-08-08 区块链的交易执行方法、装置、程序产品、设备和介质
US18/379,583 US20240104558A1 (en) 2022-09-26 2023-10-12 Blockchain transaction execution method and apparatus, program product, device, and medium

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202211174267.3A CN117807157A (zh) 2022-09-26 2022-09-26 区块链的交易执行方法、装置、程序产品、设备和介质

Publications (1)

Publication Number Publication Date
CN117807157A true CN117807157A (zh) 2024-04-02

Family

ID=90424006

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211174267.3A Pending CN117807157A (zh) 2022-09-26 2022-09-26 区块链的交易执行方法、装置、程序产品、设备和介质

Country Status (2)

Country Link
CN (1) CN117807157A (zh)
WO (1) WO2024066749A1 (zh)

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108805701B (zh) * 2018-04-19 2022-06-07 深圳市迅雷网络技术有限公司 多区块链跨链交易处理系统及方法、区块链系统及存储介质
CN109559227A (zh) * 2018-11-29 2019-04-02 咪咕文化科技有限公司 一种跨区块链网络的交易方法、装置及存储介质
CN110046992A (zh) * 2018-12-12 2019-07-23 阿里巴巴集团控股有限公司 一种基于区块链智能合约的交易哈希获取方法及系统
CN110020856B (zh) * 2019-01-31 2020-06-05 阿里巴巴集团控股有限公司 区块链中实现混合交易的方法、节点和存储介质
CN111181968B (zh) * 2019-12-30 2021-09-21 北京金山云网络技术有限公司 跨区块链通信方法、装置、跨链服务系统及跨链交易系统
CN112330326B (zh) * 2020-11-27 2023-06-30 中国农业银行股份有限公司 一种应用于银行交易区块链系统的业务处理方法和装置
CN112306645B (zh) * 2020-12-24 2021-05-04 北京百度网讯科技有限公司 以太坊虚拟机的事务处理方法、装置、设备和介质
CN114202415A (zh) * 2021-09-06 2022-03-18 中国民生银行股份有限公司 基于异构链的数据处理方法及装置
CN113689216A (zh) * 2021-10-26 2021-11-23 腾讯科技(深圳)有限公司 跨链事务处理方法及装置、设备、存储介质、程序产品
CN114116134A (zh) * 2021-12-01 2022-03-01 上海研晓实业发展有限公司 智能合约部署和执行方法、设备及存储介质
CN114358936A (zh) * 2021-12-31 2022-04-15 杭州溪塔科技有限公司 一种基于微服务区块链的智能合约运行方法
CN114612103B (zh) * 2022-05-10 2022-08-02 中国信息通信研究院 跨区块链交易的方法、装置、系统、介质及电子设备

Also Published As

Publication number Publication date
WO2024066749A1 (zh) 2024-04-04

Similar Documents

Publication Publication Date Title
CN103155513B (zh) 加速认证的方法和装置
CN110601896B (zh) 一种基于区块链节点的数据处理方法以及设备
CN112613877B (zh) 应用于区块链网络的智能合约触发方法、装置及相关设备
CN110400217B (zh) 智能合约的规则变更处理方法及装置
CN111988418B (zh) 数据处理方法、装置、设备及计算机可读存储介质
CN111488372A (zh) 一种数据处理方法、设备及存储介质
CN110661853A (zh) 一种数据代理方法、装置、计算机设备及可读存储介质
CN112631924A (zh) 自动化测试方法、装置、计算机设备及存储介质
EP4320899A1 (en) Secure sensor data distribution
CN109769010A (zh) 基于SDK访问CloudStack服务器的方法、装置、设备及存储介质
CN113129002A (zh) 一种数据处理方法以及设备
CN111327680B (zh) 认证数据同步方法、装置、系统、计算机设备和存储介质
CN111801696A (zh) 支付页面管理方法、设备、支付系统以及存储介质
CN113014556B (zh) 银企通讯系统、通讯方法以及电子终端
CN117807157A (zh) 区块链的交易执行方法、装置、程序产品、设备和介质
CN105141586A (zh) 一种对用户进行验证的方法和系统
US8479175B1 (en) Mainframe-based web service development accelerator
CN116488818A (zh) 基于区块链的数据处理方法、装置、设备及可读存储介质
CN113628052A (zh) 基于预言机的区块链资产与合约处理方法、系统及装置
CN112184453A (zh) 基于区块链的信息的处理方法、区块链节点以及存储介质
CN112000679A (zh) 业务操作与数据操作分离的区块链数据处理方法及装置
CN114398376A (zh) 一种数据处理方法、设备及可读存储介质
US20240104558A1 (en) Blockchain transaction execution method and apparatus, program product, device, and medium
CN114398082B (zh) 一种框架式区块链应用的兼容运行方法及装置
CN116502272B (zh) 计算机辅助设计cad元文件的保存方法和装置

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