版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
(19)国家知识产权局(12)发明专利(74)专利代理机构上海隆天律师事务所31282专利代理师万铁占拟机的智能合约之上实现对多种合约语言实现获取基于目标合约语言的合约部署交易,目标合约语言对应于多种虚拟获取基于目标合约语言的合约部署交易,目标合约语言对应于多种虚拟机实例中的目标合约虚拟机实例根据合约部署交易在区块链中调用第一智能合约在WASM虚拟机中执行第一智能合约,通过执行第一智能合约解析合约部署交易,得到基于目标合约语言的第二智能合约将第二智能合约部署到区块链上21.一种基于区块链平台的智能合约部署方法,其特征在于,在所述区块链平台中部署WASM虚拟机,在所述WASM虚拟机中部署分别支持不同区块链平台的合约语言的多种合约虚获取基于目标合约语言的合约部署交易,所述目标合约语言对应于所述多种虚拟机实例中的目标合约虚拟机实例;根据所述合约部署交易在所述区块链中调用所述第一智能合约;在所述WASM虚拟机中执行所述第一智能合约,通过执行所述第一智能合约解析所述合约部署交易,得到基于所述目标合约语言的第二智能合约;将所述第二智能合约部署到所述区块链上。2.根据权利要求1所述的基于区块链平台的智能合约部署方法,其特征在于,所述通过执行所述第一智能合约解析所述合约部署交易,得到基于所述目标合约语言的第二智能合通过执行所述第一智能合约解析所述合约部署交易,得到基于所述目标合约语言的字节码合约文件、以及利用所述字节码文件形成的所述第二智能合约。3.一种基于区块链平台的智能合约执行方法,其特征在于,在所述区块链平台中部署虚拟机中部署分别支持不同合约语言的多种合约虚拟机实例,并在区块链中部署所述WASM虚拟机所支持的第一智能合约、及所述多种合约虚拟机实例分别支持的多种实例智能合约,所述方法包括:在所述区块链中对所述多种实例智能合约中的第二智能合约及所述第一智能合约发起调用;在所述WASM虚拟机中执行所述第一智能合约,通过执行所述第一智能合约在所述多种合约虚拟机实例中调用支持所述第二智能合约的目标合约虚拟机实例,利用所述目标合约虚拟机实例执行所述第二智能合约,输出执行结果;将所述执行结果上传到区块链。4.根据权利要求3所述的基于区块链平台的智能合约执行方法,其特征在于,在所述WASM虚拟机中执行所述第一智能合约之前,所述方法还包括:利用交易实例对调用的所述第二智能合约进行实例化,获得合约交易;利用所述合约交易对调用的所述第一智能合约进行实例化,获得虚拟机实例调用交在所述WASM虚拟机中执行所述第一智能合约,通过执行所述第一智能合约在所述多种合约虚拟机实例中调用支持所述第二智能合约的目标合约虚拟机实例,利用所述目标合约虚拟机实例执行所述第二智能合约,包括:在所述WASM虚拟机中执行所述虚拟机实例调用交易,调用支持所述第二智能合约的目标合约虚拟机实例,利用所述目标合约虚拟机实例执行所述合约交易。5.根据权利要求4所述的基于区块链平台的智能合约执行方法,其特征在于,利用交易实例对调用的所述第二智能合约进行实例化,获得合约交易,包括:在调用的所述第二智能合约为字节码文件的情况下,利用交易实例对所述字节码文件进行实例化,获得基于字节码实现的合约交易;利用所述目标合约虚拟机实例执行所述合约交易,包括:3利用所述目标合约虚拟机实例将所述字节码转译为机器码,并执行所述机器码。6.根据权利要求4所述的基于区块链平台的智能合约执行方法,其特征在于,利用所述合约交易对调用的所述第一智能合约进行实例化,获得虚拟机实例调用交易,包括:在调用的所述第一智能合约为字节码文件的情况下,利用所述合约交易对所述字节码文件进行实例化,获得基于字节码的虚拟机实例调用交易;在所述WASM虚拟机中执行所述虚拟机实例调用交易,调用支持所述第二智能合约的目利用所述WASM虚拟机将所述字节码转译为机器码,并执行所述机器码,通过执行所述机器码调用支持所述第二智能合约的目标合约虚拟机实例。7.根据权利要求3所述的基于区块链平台的智能合约执行方法,其特征在于,所述方法还包括:在所述区块链中对所述多种实例智能合约中的第二智能合约和第一智能合约发起调用之前,接收交易发起方基于所述第二智能合约的交易请求;所述在区块链中对所述多种实例智能合约中的第二智能合约发起调用,包括:响应于所述交易请求,在所述区块链中对所述多种实例智能合约中的第二智能合约发8.一种基于区块链平台的智能合约部署装置,其特征在于,在所述区块链平台中部署虚拟机中部署分别支持不同合约语言的多种合约虚拟机实例,并第一获取模块,获取基于目标合约语言的合约部署交易,所述目标合约语言对应于所述多种虚拟机实例中的目标合约虚拟机实例;第一调用模块,根据所述合约部署交易在所述区块链中调用所述第一智能合约;第一执行模块,在所述WASM虚拟机中执行所述第一智能合约,通过执行所述第一智能合约解析所述合约部署交易,得到基于所述目标合约语言的第二智能合约;部署模块,将所述第二智能合约部署到所述区块链上。9.一种基于区块链平台的智能合约执行装置,其特征在于,在所述区块链平台中部署虚拟机中部署分别支持不同合约语言的多种合约虚拟机实例,并在区块链中部署所述WASM虚拟机所支持的第一智能合约、及所述多种合约虚拟机实例所分别支持的多种实例智能合约,所述装置包括:第二调用模块,在所述区块链中对所述多种实例智能合约中的第二智能合约及所述第一智能合约发起调用;第二执行模块,在所述WASM虚拟机中执行所述第一智能合约,通过执行所述第一智能合约在所述多种合约虚拟机实例中调用支持所述第二智能合约的目标合约虚拟机实例,利用所述目标合约虚拟机实例执行所述第二智能合约,输出执行结果;上传模块,将所述执行结果上传到区块链。处理器;存储器,其中存储有所述处理器的可执行指令;其中,所述处理器配置为经由执行所述可执行指令来执行权利要求1至2任意一项所述4基于区块链平台的智能合约部署方法的步骤、或权利要求3-7任意一项所述基于区块链平台的智能合约执行方法的步骤。11.一种计算机可读存储介质,用于存储程序,其特征在于,所述程序被处理器执行时实现1至2任意一项所述基于区块链平台的智能合约部署方法的步骤、或权利要求3-7任意一项所述基于区块链平台的智能合约执行方法的步骤。5技术领域[0001]本发明涉及区块链技术领域,具体地说,涉及智能合约部署和执行方法、设备及存储介质。背景技术[0002]虚拟机VM(VirtualMachine),在计算机科学中的体系结构里,是指一种特殊的软件,可以在计算机平台和终端用户之间创建一种环境,而终端用户则是基于虚拟机这个软件所创建的环境来操作其它软件。[0003]伴随区块链出现衍生出来的区块链虚拟机首次被以太坊引入到区块链技术集,并被扩展到基于其他合约语言的虚拟机中。[0004]区块链虚拟机是智能合约代码的执行器。具体地,当智能合约被编译成二进制文件后,被部署到区块链上,并通过区块链平台部署的区块链虚拟机支持合约的执行与调用,调用时根据合约地址获取到智能合约代码,生成环境后载入到区块链虚拟机中运行,修改[0005]但是,各区块链系统在实现区块链虚拟机时,是与智能合约的合约语言相关的,每一种区块链虚拟机能够对相应合约语言的智能合约进行执行与调用,这也导致使用智能合约实现的项目生态的隔离。发明内容[0006]针对现有技术中的问题,本发明的目的在于提供智能合约部署和执行方法、设备及存储介质,实现跨区块链系统的智能合约融合复用。[0007]本发明的实施例提供一种基于区块链平台的智能合约部署方法,在区块链平台中虚拟机中部署分别支持不同合约语言的多种合约虚拟机实例,并[0008]获取基于目标合约语言的合约部署交易,目标合约语言对应于多种虚拟机实例中的目标合约虚拟机实例;[0009]根据合约部署交易在区块链中调用第一智能合约;[0010]在WASM虚拟机中执行第一智能合约,通过执行第一智能合约解析合约部署交易,得到基于目标合约语言的第二智能合约;[0011]将第二智能合约部署到区块链上。[0012]可选地,通过执行第一智能合约解析合约部署交易,得到基于目标合约语言的第[0013]通过执行第一智能合约解析合约部署交易,得到基于目标合约语言的字节码合约文件、以及利用字节码文件形成的所述第二智能合约。[0014]本发明实施例还提供一种基于区块链平台的智能合约执行方法,在区块链平台中虚拟机中部署分别支持不同合约语言的多种合约虚拟机实例,并6在区块链中部署WASM虚拟机所支持的第一智能合约、及多种合约虚拟机实例所分别支持的[0015]在区块链中对多种实例智能合约中的第二智能合约及第一智能合约发起调用;[0016]在WASM虚拟机中执行第一智能合约,通过执行第一智能合约在多种合约虚拟机实例中调用支持第二智能合约的目标合约虚拟机实例,利用目标合约虚拟机实例执行第二智[0017]将执行结果上传到区块链。[0019]利用交易实例对调用的第二智能合约进行实例化,获得合约交易;[0020]利用合约交易对调用的第一智能合约进行实例化,获得虚拟机实例调用交易;[0021]在WASM虚拟机中执行第一智能合约,通过执行第一智能合约在多种合约虚拟机实例中调用支持第二智能合约的目标合约虚拟机实例,利用目标合约虚拟机实例执行第二智[0022]在WASM虚拟机中执行虚拟机实例调用交易,调用支持第二智能合约的合约类型的目标合约虚拟机实例,利用目标合约虚拟机实例执行合约交易。[0024]在调用的第二智能合约为字节码文件的情况下,利用交易实例对字节码文件进行实例化,获得基于字节码实现的合约交易;[0026]利用目标合约虚拟机实例将字节码转译为机器码,并执行机器码。[0027]可选地,利用合约交易对调用的第一智能合约进行实例化,获得虚拟机实例调用[0028]在调用的第一智能合约为字节码文件的情况下,利用合约交易对字节码文件进行实例化,获得基于字节码的虚拟机实例调用交易;[0029]在WASM虚拟机中执行所述虚拟机实例调用交易,调用支持第二智能合约的目标合[0030]利用WASM虚拟机将所述字节码转译为机器码,并执行机器码,通过执行机器码调用支持第二智能合约的目标合约虚拟机实例。[0032]在区块链中对多种实例智能合约中的第二智能合约和第一智能合约发起调用之前,接收交易发起方基于第二智能合约的交易请求;[0033]在区块链中对多种实例智能合约中的第二智能合约发起调用,包括:[0034]响应于交易请求,在区块链中对多种实例智能合约中的第二智能合约发起调用,还调用第一智能合约。[0035]本发明实施例还提供一种基于区块链平台的智能合约部署装置,在区块链平台中虚拟机中部署分别支持不同合约语言的多种合约虚拟机实例,并[0036]第一获取模块,获取基于目标合约语言的合约部署交易,目标合约语言对应于多种虚拟机实例中的目标合约虚拟机实例;7[0037]第一调用模块,根据合约部署交易在区块链中调用第一智能合约;[0038]第一执行模块,在WASM虚拟机中执行第一智能合约,通过执行第一智能合约解析合约部署交易,得到基于目标合约语言的第二智能合约;[0039]部署模块,将第二智能合约部署到区块链上。[0040]本发明实施例还提供一种基于区块链平台的智能合约执行装置,在区块链平台中虚拟机中部署分别支持不同合约语言的多种合约虚拟机实例,并在区块链中部署WASM虚拟机所支持的第一智能合约、及多种合约虚拟机实例所分别支持的[0041]第二调用模块,在所述区块链中对所述多种实例智能合约中的第二智能合约及所述第一智能合约发起调用;[0042]第二执行模块,在WASM虚拟机中执行第一智能合约,通过执行第一智能合约在多种合约虚拟机实例中调用支持第二智能合约的目标合约虚拟机实例,利用目标合约虚拟机实例执行第二智能合约,输出执行结果;[0043]上传模块,将执行结果上传到区块链。[0046]存储器,其中存储有处理器的可执行指令;[0047]其中,处理器配置为经由执行可执行指令来执行上述基于区块链平台的智能合约部署方法的步骤、或基于区块链平台的智能合约执行方法的步骤。[0048]本发明的实施例还提供一种计算机可读存储介质,用于存储程序,程序被执行时实现上述基于区块链平台的智能合约部署方法的步骤、或基于区块链平台的智能合约执行方法的步骤。[0049]本发明的目的在于提供基于区块链平台的智能合约部署和执行方法、设备及存储介质,通过在WASM虚拟机部署支持多种合约语言的合约虚拟机实例,在区块链上部署对应该多种合约语言的第二智能合约,在接收到对任意一种合约语言的第二智能合约的调用请求时,调用第一调用能够支持第二智能合约的合约类型的区块链合约虚拟机实例来执行第二智能合约,将执行结果存储到区块链上。利用本发明实施例的方案,通过在WASM虚拟机中实现多种具体的合约虚拟机实例,从而可以在WASM虚拟机的智能合约之上实现对多种合约语言实现的智能合约的部署和调用,而无需对区块链底层架构进行适配重构,本发明实施例在实现跨区块链智能合约融合复用方面具有较高可行性。附图说明[0050]通过阅读参照以下附图对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显。[0051]图1是本发明实施例提供的基于区块链平台的WASM虚拟机结构示意图;[0052]图2是本发明实施例提供的基于区块链平台的智能合约部署方法的流程图;[0053]图3是本发明实施例提供的基于区块链平台的智能合约执行方法的流程图之一;[0054]图4是本发明实施例提供的基于区块链平台的智能合约执行方法的流程图之二;[0055]图5是本发明实施例提供的基于区块链平台的智能合约执行方法的流程图之三;8[0056]图6是本发明实施例提供的基于区块链平台的智能合约部署模块示意图;[0057]图7是本发明实施例提供的基于区块链平台的智能合约执行模块示意图之一;[0058]图8是本发明实施例提供的基于区块链平台的智能合约执行模块示意图之二;[0059]图9是本发明实施例提供的基于区块链平台的智能合约执行模块示意图之三;[0060]图10是本发明的电子设备结构示意图。具体实施方式[0061]现在将参考附图更全面地描述示例实施方式。然而,示例实施方式能够以多种形式实施,且不应被理解为限于在此阐述的实施方式。相反,提供这些实施方式使本发明全面和完整,并将示例实施方式的构思全面地传达给本领域的技术人员。[0062]附图仅为本发明的示意性图解,并非一定是按比例绘制。图中相同的附图标记表示相同或类似的部分,因而将省略对它们的重复描述。附图中所示的一些方框图是功能实体,不一定必须与物理或逻辑上独立的实体相对应。可以采用软件形式来实现这些功能实体,或在一个或多个硬件转发模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。[0063]此外,附图中所示的流程仅是示例性说明,不是必须包括所有的步骤。例如,有的步骤可以分解,有的步骤可以合并或部分合并,且实际执行的顺序有可能根据实际情况改性,而只是用来区分不同的组成部分。需要说明的是,在不冲突的情况下,本发明的实施例及不同实施例中的特征可以相互组合。[0064]本发明人对现有多种区块链虚拟机进行研究,现在存在如下三种区块链多虚拟机及合约语言融合的解决方案:[0065]长安链ChainMaker,提供集成多虚拟机及合约语言的开源解决方案,但这些集成的虚拟机并没有统一通用流程和规范。语言虚拟机是基于Docker容器实现的,并不支持多合约生态。[0067]FISCO-BCOS,由开源项目以太坊重度重构得到,其底层原生支持以太坊虚拟机EVM(EthereumVirtualMachine),没有通用的横向扩展接口和通用流程规范,在拓展其他技术架构的虚拟机时,需要对底层实现的架构做大量修改和适配重构。[0068]因此,在业界尚不存在一种可行性较高的多合约融合复用解决方案。[0069]进一步思考,区块链虚拟机需要适用更复杂广泛且通用的场景,即图灵完备性。从软件模拟的角度来说,虚拟机是用软件进行模拟特定机器运行的机制,而机器的输入便是人类的代码指令,但是从类人类的高级语言到机器可以执行的低级语言,再到虚拟机运行指令运转并更改状态,需要系列的处理流程。而这些差异便是区块链虚拟机和传统虚拟机的不同之处。[0070]本发明人注意到,在各类区块链虚拟机实现技术中,WASM(WebAssembly)虚拟机是其中一种区块链虚拟机,采用WASM实现。WASM是一个实验性的低阶程序语言,是关于概念的机器语言,支持采用C/C++作为实作目标进行编译,这种特性使其能够具有更广泛的通用9[0071]WASM作为一种低阶程序语言,不仅能用于智能合约编码并通过WASM虚拟机实现对合约的执行和调用,也能够用于在该低阶程序语言之上实现其他类型的区块链合约虚拟机实例,使其具有解决跨区块链生态的多合约融合复用的可能。[0072]因此,本发明实施例提出,在WASM虚拟机中部署多约虚拟机实例,并在区块链中部署该WASM所支持的第一智能合约实现多种合约虚拟机实例及对应智能合约的迁移和部署。[0073]其中,第一智能合约用于定义对这些合约虚拟机实例所支持第二智能合约的部署和调用,这样能够在第一智能合约之上实现对多个合约虚拟机实例的部署和调用。[0074]在部署阶段,对使用任意一种合约语言的第二智能合约的合约部署交易,可以通过调用第一智能合约并在WASM虚拟机中对合约部署交易执行第一智能合约,解析出第二智[0075]在执行阶段,在接收到对任意一种合约语言的第二智能合约的调用请求时,调用第一智能合约和第二智能合约,通过在WASM虚拟机中执行第一智能合约,调用能够支持第二智能合约的合约类型的区块链合约虚拟机实例来执行第二智能合约,将执行结果存储到区块链上。[0076]利用本发明实施例的方案,通过在WASM虚拟机中实现多种具体的合约虚拟机实例,从而可以在WASM虚拟机的智能合约之上实现对多种合约语言实现的智能合约的部署和调用,而无需对区块链底层架构进行适配重构,本发明实施例在实现跨区块链智能合约融合复用方面具有较高可行性。[0077]在本发明实施例中,参考图1,可以在WASM虚拟机100中部署分别支持不同区块链平台的合约语言的多种合约虚拟机实例,在WASM虚拟机之上进行抽象和实现的多实例异构机110、基于Solidity的EVM120、Gola[0079]具体地,开发人员在获取待移植的虚拟机官方文档及规范的情况下,从中提取指令集定义及约束常量定义、以及编解码及相关序列化方法实现,得到网络交易数据解析逻辑实现,用来构造虚拟执行环境和交易结构实例,作为合约虚拟机实例部署在WASM虚拟机[0080]图2是本发明的基于区块链平台的智能合约部署方法的一种实施例的流程图,其中区块链平台可以理解成区块链系统的入口,用于部署WASM虚拟机,而WASM虚拟机提供多种合约虚拟机实例的运行环境,并在区块链中部署WASM虚拟机所支持的第一智能合约。[0081]如图2所示,本发明的实施例提供一种基于区块链平台的智能合约部署方法,本方法的执行主体是区块链节点。本方法包括以下步骤:[0082]步骤210:获取基于目标合约语言的合约部署交易,目标合约语言对应于多种虚拟机实例中的目标合约虚拟机实例;[0083]步骤220:根据合约部署交易在区块链中调用第一智能合约;[0084]步骤230:在WASM虚拟机中执行第一智能合约,通过执行第一智能合约解析合约部署交易,得到基于目标合约语言的第二智能合约;[0085]步骤240:将第二智能合约部署到区块链上。[0086]在本实施例中,合约部署交易可以理解为在区块链上部署基于目标合约语言的第二智能合约的交易。第一智能合约为部署第二智能合约的合约,在第一智能合约之上实现对多种合约虚拟机所支持智能合约的部署。[0087]在本发明实施例的应用场景中,用户不需要在不同区块链系统之上,分别根据该情况系统所支持合约语言开发多份智能合约代码再部署,而是能够直接通过该区块链平台在区块链上部署和实现多份智能合约,给用户带来良好的使用体验。[0088]因此,使用本发明实施例,在WASM虚拟机的智能现的智能合约的移植和部署,而无需对区块链底层架构进行适配重构,在实现跨区块链智能合约融合复用方面具有较高可行性。[0089]在本发明实施例中,区块链平台提供调用第一智能合约的接口,接收对第二智能合约的合约部署交易,实现获取合约部署交易的一个示例。[0090]在本发明实施例中,通过执行第一智能合约解析合约部署交易,得到基于目标合[0091]通过执行第一智能合约解析合约部署交易,得到基于目标合约语言的字节码合约文件、以及利用字节码文件形成的第二智能合约。[0092]字节码(英语:Bytecode)通常指的是已经经过编译,但与特是编码后的数值常量、引用、指令等构成的序列。字节码主要为了实现特定软件运行和软件环境、与硬件环境无关。使用编译器将源代码编译成字节码,输出字[0093]该字节码合约文件用于,在执行阶段,对应的目标合约虚拟机实例能够将该字节码转译成可以直接执行的机器码指令。[0094]因此,合约部署交易可以包括交易发起者账户地址、字节码合约文件和接口描述文件等信息。接口描述文件描述一种应用程序二进制接口,具体可以是是字节码合约文件的源代码编译之后的接口文件,方便软件工具包进行合约部署交易的构成、合约调用交易的构成以及执行调用后的执行结果的解析。[0095]在本发明实施例中,在将第二智能合约部署到区块链上之前,可以将第二智能合约在区块链中进行共识,待共识通过后,生成第二智能合约的合约地址并根据该合约地址上传到区块链。[0096]图3为本发明实施例提供的基于区块链平台的智能合约执行方法的流程图,本方分别支持不同合约语言的多种合约虚拟机实例,并在区块链中部署WASM虚拟机支持的第一智能合约、及多种合约虚拟机实例分别支持的多种实例智能合约。[0097]本方法包括如下步骤:[0098]步骤310:在区块链中对多种实例智能合约中的第二智能合约及第一智能合约发起调用;[0099]步骤320:在WASM虚拟机中执行第一智能合约,通过执行第一智能合约在多种合约虚拟机实例中调用支持第二智能合约的目标合约虚拟机实例,利用目标合约虚拟机实例执行第二智能合约,输出执行结果;[0100]步骤330:将执行结果上传到区块链。11[0101]在本发明实施例中,智能合约执行过程应用于具体业务交易,最终的执行结果是基于第二智能合约的业务交易结果。[0102]在本发明实施例中,WASM虚拟机提供其他合约虚拟机的运行环境,根据第二智能合约的合约类型调用具体的目标合约虚拟机实例,由WASM虚拟机运行时实现的目标合约虚拟机实例解释执行。[0103]在这种情况下,能够在WASM虚拟机中并行实现多个合约虚拟机实例运行时。[0104]在本发明实施例中,根据第二智能合约的合约地址调用第二智能合约,该第二智能合约直接作为WASM虚拟机实例的输入,由WASM虚拟机调用模板合约虚拟机实例执行第二智能合约。[0105]在本发明实施例中,参照图4,基于区块链平台的智能合约执行方法包括如下步[0106]步骤410:在区块链中对多种实例智能合约中的第二智能合约及所述第一智能合约发起调用;[0107]步骤420:利用交易实例对调用的第二智能合约进行实例化,获得合约交易;[0108]步骤430:利用所述合约交易对调用的第一智能合约进行实例化,获得虚拟机实例调用交易;[0109]步骤440:在WASM虚拟机中执行虚拟机实例调用交易,调用支持第二智能合约的目标合约虚拟机实例,利用目标合约虚拟机实例执行合约交易,输出执行结果;[0110]步骤450:将执行结果上传区块链。[0111]在本发明实施例中,交易实例包含提交到区块链平台的区块链交易参数,具体包括交易发起方信息、交易目的方信息、交易对象、交易标的等,利用这些参数对具体的第二智能合约进行实例化。[0112]在这种情况下,目标合约虚拟机实例通过执行该合约交易,具体为基于相应的交易实例执行智能合约设定的交易条件,输出交易执行结果。[0113]在本发明实施例中,利用合约交易对第一智能合约进行实例化,可以是指利用第二智能合约的合约类型对第一智能合约进行实例化。在这种情况下,WASM虚拟机通过执行该虚拟机实例调用交易,解析出第二智能合约的合约类型,从而利用该合约类型调用支持该合约类型的目标合约虚拟机实例,并运行该目标合约虚拟机实例。[0114]在本发明实施例中,第二智能合约是以字节码文件的形式部署在区块链上。因此,利用交易实例对调用的所述第二智能合约进行实例化,获得合约交易,包括:[0115]在调用的所述第二智能合约为字节码文件的情况下,利用交易实例对所述字节码文件进行实例化,获得基于字节码实现的合约交易;[0117]利用所述目标合约虚拟机实例将所述字节码转译为机器码,并执行所述机器码。[0118]目标合约虚拟机实例具有解释器功能,对字节码进行解释转译成机器码,机器码为一系列可执行指令,从而能够为目标合约虚拟机实例执行。[0119]在本发明实施例中,第一智能合约也是以字节码形式部署在区块链上。因此,利用所述合约交易对调用的所述第一智能合约进行实例化,获得虚拟机实例调用交易,具体包[0120]在调用的第一智能合约为字节码文件的情况下,利用所述合约交易对所述字节码文件进行实例化,获得基于字节码的虚拟机实例调用交易;[0121]在所述WASM虚拟机中执行所述虚拟机实例调用交易,调用支持所述第二智能合约[0122]利用WASM虚拟机将所述字节码转译为机器码,并执行所述机器码,通过执行所述机器码调用支持所述第二智能合约的目标合约虚拟机实例。[0123]WASM虚拟机能够对第一智能合约的字节码进行解释转译成机器码,并执行该机器[0124]在本发明实施例中,参考图5,智能合约执行方法包括如下步骤:[0125]步骤510:接收交易发起方基于所述第二智能合约的交易请求;[0126]步骤520:响应于交易请求,在所述区块链中对所述多种实例智能合约中的第二智能合约发起调用,还调用所述第一智能合约;[0127]步骤530:在WASM虚拟机中执行第一智能合约,通过执行第一智能合约在多种合约虚拟机实例中调用支持第二智能合约的目标合约虚拟机实例,利用目标合约虚拟机实例执[0128]步骤540:将执行结果上传到区块链。[0129]本发明实施例的智能合约执行方法应用于具体的交易场景。[0130]在本发明实施例中,执行结果在上链之前,发送给共识节点,由共识节点进行共[0131]图6为本发明实施例提供的基于区块链平台的智能合约部署装置的结构图,本装置可以包括:[0132]获取模块610,获取基于目标合约语言的合约部署交易,目标合约语言对应于多种虚拟机实例中的目标合约虚拟机实例;[0133]第一调用模块620,根据合约部署交易在区块链中调用第一智能合约;[0134]第一执行模块630,在WASM虚拟机中执行第一智能合约,通过执行第一智能合约解析合约部署交易,得到基于目标合约语言的第二智能合约;[0135]部署模块640,将第二智能合约部署到区块链上。[0137]通过执行所述第一智能合约解析所述合约部署交易,得到基于所述目标合约语言的字节码合约文件、以及利用所述字节码文件形成的所述第二智能合约。[0138]利用本发明实施例的方案,通过在WASM虚拟机中实现多种具体的合约虚拟机实例,从而可以在WASM虚拟机的智能合约之上实现对多种合约语言实现的智能合约的部署和调用,而无需对区块链底层架构进行适配重构,本发明实施例在实现跨区块链智能合约融合复用方面具有较高可行性。[0139]上述模块的实现原理参见基于区块链平台的智能合约部署方法中的相关介绍,此处不再赘述。[0140]图7为本发明实施例提供的基于区块链平台的智能合约执行装置的结构图,本装置可以包括:[0141]第二调用模块710,在所述区块链中对所述多种实例智能合约中的第二智能合约及所述第一智能合约发起调用;[0142]第二执行模块720,在WASM虚拟机中执行第一智能合约,通过执行第一智能合约在多种合约虚拟机实例中调用支持第二智能合约的目标合约虚拟机实例,利用目标合约虚拟机实例执行第二智能合约,输出执行结果;[0143]上传模块730,将执行结果上传到区块链。[0145]第一实例化模块810,利用交易实例对调用的所述第二智能合约进行实例化,获得合约交易;[0146]第二实例化模块820,利用所述合约交易对调用的所述第一智能合约进行实例化,获得虚拟机实例调用交易;[0147]第二执行模块830具体用于:[0148]在所述WASM虚拟机中执行所述虚拟机实例调用交易,调用支持所述第二智能合约的目标合约虚拟机实例,利用所述目标合约虚拟机实例执行所述合约交易。[0150]在调用的所述第二智能合约为字节码文件的情况下,利用交易实例对所述字节码文件进行实例化,获得基于字节码实现的合约交易;[0151]第二执行模块830具体用于:[0152]利用所述目标合约虚拟机实例将所述字节码转译为机器码,并执行所述机器码。[0154]在调用的所述第一智能合约为字节码文件的情况下,利用所述合约交易对所述字节码文件进行实例化,获得基于字节码的虚拟机实例调用交易;[0155]第二执行模块830具体用于:[0156]利用所述WASM虚拟机将所述字节码转译为机器码,并执行所述机器码,通过执行所述机器码调用支持所述第二智能合约的目标合约虚拟机实例。[0158]接收模块910,在所述区块链中对所述多种实例智能合约中的第二智能合约和第一智能合约发起调用之前,接收交易发起方基于所述第二智能合约的交易请求;[0159]第二调用模块920具体用于:[0160]响应于所述交易请求,在所述区块链中对所述多种实例智能合约中的第二智能合约发起调用,还调用所述第一智能合约。[0161]上述模的实现原理参见基于区块链平台的智能合约执行方法中的相关介绍,此处不再赘述。[0162]利用本发明实施例的方案,通过在WASM虚拟机中实现多种具体的合约虚拟机实例,从而可以在WASM虚拟机的智能合约之上实现对多种合约语言实现的智能合约的部署和调用,而无需对区块链底层架构进行适配重构,本发明实施例在实现跨区块链智能合约融合复用方面具有较高可行性。[0163]本发明实施例还提供一种电子设备,包括处理器。存储器,其中存储有处理器的可执行指令。其中,处理器配置为经由执行可执行指令来执行的基于区块链平台的智能合约部署方法的步骤或基于区块链平台的智能合约执行方法的步骤。[0164]如上所示,利用本发明实施例的方案,通过在WASM虚拟机中实现多种具体的合约虚拟机实例,从而可以在WASM虚拟机的智能合约之上实现对多种合约语言实现的智能合约的部署和调用,而无需对区块链底层架构进行适配重构,本发明实施例在实现跨区块链智能合约融合复用方面具有较高可行性。[0165]所属技术领域的技术人员能够理解,本发明的各个方面可以实现为系统、方法或全的软件实施方式(包括固件、微代码等),或硬件和软件方面结合的实施方式,这里可以统称为“电路”、“模块”或“平台”。[0166]图10是本发明的电子设备的结构示意图。下面参照图10来描述根据本发明的这种实施方式的电子设备1000。图10显示的电子设备1000仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。[0167]如图10所示,电子设备1000以通用计算设备的形式表现。电子设备1000的组件可以包括但不限于:至少一个处理单元1010、至少一个存储单元1020、连接不同平台组件(包括存储单元1020和处理单元1010)的总线1030、显示单元1040等。[0168]其中,存储单元存储有程序代码,程序代码可以被处理单元1010执行,使得处理单元1010执行本说明书上述电子处方流转处理方法部分中描述的根据本发明各种示例性实施方式的步骤。例如,处理单元1010可以执行如图2中所示的步骤。[0169]存储单元1020可以包括易失性存储单元形式的可读介质,例如随机存取存储单元(RAM)1021和/或高速缓存存储单元1022,还可以进一步包括只读存储单元(ROM)1023。[0170]存储单元1020还可以包括具有一组(至少一个)程序模块1025的程序/实用工具1024,这样的程序模块1025包括但不限于:处理系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。[0171]总线1030可以为表示几类总线结构中的一种或多种,包括存储单元总线或者存储单元控制器、外围总线、图形加速端口、处理单元或者使用多种总线结构中的任意总线结构的局域总线。[0172]电子设备1000也可以与一个或多个外部设备1100(例如键盘、指向设备、蓝牙设备等)通信,还可与一个或者多个使得用户能与该电子设备1000交互的设备通信,和/或与使得该电子设备1000能与一个或多个其它计算设备进行通信的任何设备(例如路由器、调制解调器等等)通信。这种通信可以通过输入/输出(I/0)接口1050进行。并且,电子设备1000还可以通过网络适配器1060与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。网络适配器10100可以通过总线1030与电子设备1000的其它模块通信。应当明白,尽管图中未示出,可以结合电子设备1000使用其它硬件和/或软件模块,动器以及数据备份存储平台等。[0173]本发明实施例还提供一种计算机可读存储介质,用于存储程序,程序被执行时实现的基于区块链平台的智能合约部署方法的步骤或基于区块链平台的智能合约执行方法的步骤。在一些可能的实施方式中,本发明的各个方面还可以实现为一种程序产品的形式,其包括程序代码,当程序产品在终端设备上运行时,程序代码用于使终端设备执行本说明书上述电子处方流转处理方法部分中描述的根据本发明各种示例性实施方式的步骤。[0174]如上所示,本发明如上实施例通过在WASM虚拟机中实现多种具体的合约虚拟机实例,从而可以在WASM虚拟机的智能合约之上实现对多种合约语言实现的智能合约的部署和调用,而无需对区块链底层架构进行适配重构,本发明实施例在实现跨区块链智能合约融合复用方面具有较高可行性。[0175]根据本发明的实施方式的用于实现上述方法的程序产品1000,其可以采用便携式而,本发明的程序产品不限于此,在本文件中,可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。[0176]程序产品可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列[0177]计算机可读存储介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。可读存储介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。可读存储介质上包含的程序代码可以用任何适当的介质传输,包括但不[0178]
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 戒烟限酒共病管理社区推广
- 成本管控视角下科室绩效分配平衡策略
- 眼科白内障手术手术规划
- 2026年作业顺序执行协议
- 配送范围条款服务
- 公平原则适用展览展示合同协议
- 2026年传统文化知识竞赛试题含答案
- 2026年4.15全民国家安全教育日知识竞赛测试题及答案
- 遥控拖曳无人机对策
- 安全风险分级管控和隐患排查治理培训试卷及答案
- (正式版)HGT 4339-2024 机械设备用涂料
- MOOC 高电压技术-西南交通大学 中国大学慕课答案
- YS-T 650-2020 医用气体和真空用无缝铜管
- 保险经济学第一章
- DB13-T1225-2010肥料pH值测定方法
- 活性炭生产工艺简介
- 现代数字信号处理课程回顾
- 国有企业招标采购相关法律法规与国有企业采购操作规范
- 户口本西语翻译模板
- 初中应用物理知识竞赛专题复习压强与浮力
- 中等职业学校毕业生登记表
评论
0/150
提交评论