CN111736954B - 多智能合约虚拟机实现方法、多智能合约虚拟机及系统 - Google Patents

多智能合约虚拟机实现方法、多智能合约虚拟机及系统 Download PDF

Info

Publication number
CN111736954B
CN111736954B CN202010589506.6A CN202010589506A CN111736954B CN 111736954 B CN111736954 B CN 111736954B CN 202010589506 A CN202010589506 A CN 202010589506A CN 111736954 B CN111736954 B CN 111736954B
Authority
CN
China
Prior art keywords
intelligent contract
virtual machine
intelligent
contract
blockchain
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202010589506.6A
Other languages
English (en)
Other versions
CN111736954A (zh
Inventor
陈鹏
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fuzhou Research Institute Of Data Chinese Academy Of Sciences
Original Assignee
Fuzhou Research Institute Of Data Chinese Academy Of Sciences
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 Fuzhou Research Institute Of Data Chinese Academy Of Sciences filed Critical Fuzhou Research Institute Of Data Chinese Academy Of Sciences
Priority to CN202010589506.6A priority Critical patent/CN111736954B/zh
Publication of CN111736954A publication Critical patent/CN111736954A/zh
Application granted granted Critical
Publication of CN111736954B publication Critical patent/CN111736954B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • 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
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/42Syntactic analysis
    • 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
    • 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
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45562Creating, deleting, cloning virtual machine instances

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • Business, Economics & Management (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Accounting & Taxation (AREA)
  • Finance (AREA)
  • Development Economics (AREA)
  • General Business, Economics & Management (AREA)
  • Technology Law (AREA)
  • Strategic Management (AREA)
  • Marketing (AREA)
  • Economics (AREA)
  • Stored Programmes (AREA)

Abstract

本发明公开了一种多智能合约虚拟机实现方法、多智能合约虚拟机及系统。该多智能合约虚拟机实现方法包括:获取智能合约及与智能合约相关的参数;根据智能合约及与智能合约相关的参数确定智能合约对接的虚拟机控制器;将智能合约输入至与智能合约对接的虚拟机控制器,并监控智能合约的执行状态;编译智能合约,输出与智能合约相应的中间字节码文件;根据中间字节码文件按照预设指令标准生成机器码。本申请提供的这种方法对于不同种类的智能合约能够选择与该智能合约对应类别的虚拟机控制器,从而将不同的智能合约分类处理。这样可以使得基于不同区块链平台开发的智能合约都可以执行,可以复用该智能合约。

Description

多智能合约虚拟机实现方法、多智能合约虚拟机及系统
技术领域
本发明涉及互联网区块链系统的智能合约领域,具体涉及一种多智能合约虚拟机实现方法、多智能合约虚拟机及系统。
背景技术
智能合约是一种计算机协议,旨在以数字化的方式构建、验证和执行合约,可以在没有第三方的情况下进行可靠的交易。智能合约是存储于区块链上的代码,在满足预设条件时自动执行。从最基本的层面来说,是程序的运行,由开发者设置。在业务协作中通常用于执行某种类型的协议,以便所有参与者都可以确定结果,而无需中间机构的参与。通过高级面向对象编程语言,可以在各种区块链上实现智能合约。同时,可以将其视为控制双方之间资产转移的一种程序,具有防篡改、自执行和自验证的特点。
目前的区块链平台(如Ethereum、EOS、Libra)支持智能合约,该智能合约可以提供一种方法,根据一组固定的规则在互不信任的各方之间执行交易。这些合约通常是用高级编程语言(如solidity)编写的程序,随后被编译为可以由区块链虚拟机解释的字节码。
目前的智能合约虚拟机都只支持一种或一类语言,如Ethereum平台的虚拟机(EVM)只支持solidity语言,EOS平台的虚拟机(EOS-VM)只支持C语言系列,Libra平台的虚拟机(Libra-VM)只支持MOVE语言。这样,基于一个区块链平台开发的智能合约无法跨平台执行,不利于智能合约的复用。若需要在不同的区块链平台上运行同样的智能合约,需要以不同语言的代码对同样的智能合约内容进行编写,这样增加了合约开发成本。同时,不同版本合约在不同的区块链上执行时消耗的资源(gas)不同,造成资源成本消耗难以统一。
发明内容
本申请实施例提供了一种多智能合约虚拟机实现方法、多智能合约虚拟机及系统。该多智能合约虚拟机实现方法包括:获取智能合约及与所述智能合约相关的参数;根据所述智能合约及与所述智能合约相关的参数确定所述智能合约对接的虚拟机控制器;将所述智能合约输入至与所述智能合约对接的虚拟机控制器,并监控所述智能合约的执行状态;编译所述智能合约,输出与所述智能合约相应的中间字节码文件;根据所述中间字节码文件按照预设指令标准生成机器码。由于本申请提供的这种方法可以根据智能合约及与该智能合约相关的参数判断该智能合约对接的虚拟机控制器,然后将该智能合约输入至与该智能合约对接的虚拟机控制器,并监控所述智能合约的执行状态。这样对于不同种类的智能合约能够选择与该智能合约对应类别的虚拟机控制器,从而将不同的智能合约分类处理。这样可以使得基于不同区块链平台开发的智能合约都可以执行,可以复用该智能合约。若需要在不同的区块链平台上运行同样的智能合约,不需要重复开发适应不同区块链平台的智能合约,可以降低开发成本。同时,编译后的字节码相同,执行时消耗的资源(gas)也相同,可以做到对账户资源的统一管理。
可选的,结合第一方面,所述方法还包括:调用区块链环境接口,与所述区块链客户端进行交互;通过所述区块链客户端,根据所述机器码对所述区块链的状态进行修改。
可选的,结合第一方面,所述通过所述区块链客户端,根据所述机器码对所述区块链的状态进行修改包括:通过区块链环境接口对所述区块链的状态进行修改。
可选的,结合第一方面,所述编译所述智能合约包括:对所述智能合约进行预处理,以及语法、语义分析;所述编译所述智能合约,输出与所述智能合约相应的中间字节码文件之后,所述方法还包括:根据预设条件对所述中间字节码文件进行优化。
可选的,结合第一方面,所述根据所述智能合约及与所述智能合约相关的参数确定所述智能合约对接的虚拟机控制器包括:根据所述智能合约及与所述智能合约相关的参数确定所述智能合约对接的虚拟机接口类别;根据所述虚拟机接口类别确定所述智能合约对接的虚拟机控制器。
可选的,结合第一方面,所述与所述智能合约相关的参数包括:智能合约采用的语言、运行的虚拟机的类别、智能合约的类别、智能合约的权限。
本申请第二方面提供了一种多智能合约虚拟机,其特征在于,所述多智能合约虚拟机包括:底层虚拟机、插拔控制器、虚拟机控制器、编译适配器,所述底层虚拟机,用于获取智能合约及与所述智能合约相关的参数;所述插拔控制器,用于根据所述智能合约及与所述智能合约相关的参数确定所述智能合约对接的虚拟机控制器;所述虚拟机控制器,用于当所述插拔控制器将所述智能合约输入至与所述智能合约对接的虚拟机控制器时,监控所述智能合约的执行状态;所述编译适配器,用于编译所述智能合约,输出与所述智能合约相应的中间字节码文件;所述编译适配器,还用于根据所述中间字节码文件按照预设指令标准生成机器码。由于本申请提供的这种多智能合约虚拟机可以根据智能合约及与该智能合约相关的参数判断该智能合约对接的虚拟机控制器,然后将该智能合约输入至与该智能合约对接的虚拟机控制器,并监控所述智能合约的执行状态。这样对于不同种类的智能合约能够选择与该智能合条约对应类别的虚拟机控制器,从而将不同的智能合约分类处理。这样可以使得基于不用区块链平台开发的智能合约都可以执行,可以复用该智能合约。若需要在不同的区块链平台上运行同样的智能合约,不需要重复开发适应不同区块链平台的智能合约,可以降低开发成本。同时,编译后的字节码相同,执行时消耗的资源(gas)也相同,可以做到对账户资源的统一管理。
可选的,结合第二方面,所述编译适配器,具体用于对所述智能合约进行预处理,以及语法、语义分析;所述编译适配器,还用于根据预设条件对所述中间字节码文件进行优化。
可选的,结合第二方面,所述插拔控制器,具体用于根据所述智能合约及与所述智能合约相关的参数确定所述智能合约对接的虚拟机接口类别,并根据所述虚拟机接口类别确定所述智能合约对接的虚拟机控制器。
可选的,结合第二方面,所述与所述智能合约相关的参数包括:智能合约采用的语言、运行的虚拟机的类别、智能合约的类别、智能合约的权限。
本申请第三方面提供了一种多智能合约虚拟机,其特征在于,所述多智能合约虚拟机包括:前端模块、后端模块,所述前端模块,用于获取智能合约及与所述智能合约相关的参数;所述前端模块,用于根据所述智能合约及与所述智能合约相关的参数确定所述智能合约对接的虚拟机控制器;所述前端模块,用于将所述智能合约输入至与所述智能合约对接的虚拟机控制器,并监控所述智能合约的执行状态;所述前端模块,用于编译所述智能合约,输出与所述智能合约相应的中间字节码文件;所述后端模块,用于根据所述中间字节码文件按照预设指令标准生成机器码。由于本申请提供的这种多智能合约虚拟机可以根据智能合约及与该智能合约相关的参数判断该智能合约对接的虚拟机控制器,然后将该智能合约输入至与该智能合约对接的虚拟机控制器,并监控所述智能合约的执行状态。这样对于不同种类的智能合约能够选择与该智能合约对应类别的虚拟机控制器,从而将不同的智能合约分类处理。这样可以使得基于不用区块链平台开发的智能合约都可以执行,可以复用该智能合约。若需要在不同的区块链平台上运行同样的智能合约,不需要重复开发适应不同区块链平台的智能合约,可以降低开发成本。同时,编译后的字节码相同,执行时消耗的资源(gas)也相同,可以做到对账户资源的统一管理。
可选的,结合第三方面,所述多智能合约虚拟机还包括:优化模块,根据预设条件对所述中间字节码文件进行优化,可以提高可约执行效率;所述前端模块,具体用于对所述智能合约进行预处理,以及语法、语义分析。所述后端模块,可以用于根据优化后的中间字节码文件按照预设指令标准生成机器码。
可选的,结合第三方面,所述前端模块,具体用于根据所述智能合约及与所述智能合约相关的参数确定所述智能合约对接的虚拟机接口类别,并根据所述虚拟机接口类别确定所述智能合约对接的虚拟机控制器。
可选的,结合第三方面,所述与所述智能合约相关的参数包括:智能合约采用的语言、运行的虚拟机的类别、智能合约的类别、智能合约的权限。
本申请第四方面提供了一种多智能合约虚拟机,其特征在于,所述多智能合约虚拟机包括:接入层、适配层、虚拟机控制器、统一编译器,
所述接入层,用于获取智能合约及与所述智能合约相关的参数;
所述适配层,用于根据所述智能合约及与所述智能合约相关的参数确定所述智能合约对接的虚拟机控制器的类别,并生成调度指令。所述适配层,还用于将不同虚拟机控制器的字节码文件映射解析为统一的中间字节码文件,且对该统一的中间字节码文件执行优化处理,并输出优化处理的统一中间字节码文件;
所述虚拟机控制器,用于当所述适配层将所述智能合约输入至与所述智能合约对接的虚拟机控制器时,响应来自适配层的调度指令,将智能合约编译为与智能合约虚拟机相应类别的字节码文件;
所述统一编译器,用于将所述优化处理后的统一中间字节码文件按照预设指令标准生成机器码,并且设置执行所述机器码中每个指令消耗的资源。
由于本申请提供的这种多智能合约虚拟机可以根据智能合约及与该智能合约相关的参数判断该智能合约对接的虚拟机控制器,然后将该智能合约输入至与该智能合约对接的虚拟机控制器,并监控所述智能合约的执行状态。这样对于不同种类的智能合约能够选择与该智能合约对应类别的虚拟机控制器,从而将不同的智能合约分类处理。这样可以使得基于不用区块链平台开发的智能合约都可以执行,可以复用该智能合约。若需要在不同的区块链平台上运行同样的智能合约,不需要重复开发适应不同区块链平台的智能合约,可以降低开发成本。同时,编译后的字节码相同,执行时消耗的资源(gas)也相同,可以做到对账户资源的统一管理。
本申请第五方面提供了一种系统,所述系统包括如第二方面及第二方面任意一种可选的实施方式中所述的多智能合约虚拟机,所述系统还包括:区块链客户端,所述多智能合约虚拟机通过区块链环境接口与区块链客户端进行交互;所述区块链客户端,用于根据所述机器码对所述区块链的状态进行修改。
可选的,结合第五方面,所述区块链客户端,具体用于通过区块链环境接口对所述区块链的状态进行修改。
本申请第六方面提供了一种系统,所述系统包括如第三方面及第三方面任意一种可选的实施方式中所述的多智能合约虚拟机,所述系统还包括:区块链客户端,所述多智能合约虚拟机通过区块链环境接口与区块链客户端进行交互;所述区块链客户端,用于根据所述机器码对所述区块链的状态进行修改。
可选的,结合第六方面,所述区块链客户端,具体用于通过区块链环境接口对所述区块链的状态进行修改。
本申请第七方面提供了一种非易失性计算机可读存储介质,所述非易失性计算机可读存储介质包括计算机可执行指令,所述计算机可执行指令被一个或多个处理器执行时,可使得所述一个或多个处理器执行如第一方面至第一方面的任意一种可能的实施方式中所述的方法。
本申请第八方面提供了一种计算机程序产品,包括指令,当所述指令在计算机设备上运行时,使得所述计算机设备执行如第一方面至第一方面的任意一种可能的实施方式中所述的方法。
本申请第九方面提供了一种芯片,所述芯片包括:处理器,所述处理器与存储器耦合,所述存储器用于存储计算机程序或指令,所述处理器用于执行所述存储器中的计算机程序或指令以实现如第一方面至第一方面的任意一种可能的实施方式中所述的方法。
本申请实施例提供了一种多智能合约虚拟机实现方法、多智能合约虚拟机及系统。该多智能合约虚拟机实现方法包括:获取智能合约及与所述智能合约相关的参数;根据所述智能合约及与所述智能合约相关的参数确定所述智能合约对接的虚拟机控制器;将所述智能合约输入至与所述智能合约对接的虚拟机控制器,并监控所述智能合约的执行状态;编译所述智能合约,输出与所述智能合约相应的中间字节码文件;根据所述中间字节码文件按照预设指令标准生成机器码。由于本申请提供的这种方法可以根据智能合约及与该智能合约相关的参数判断该智能合约对接的虚拟机控制器,然后将该智能合约输入至与该智能合约对接的虚拟机控制器,并监控所述智能合约的执行状态。这样对于不同种类的智能合约能够选择与该智能合约对应类别的虚拟机控制器,从而将不同的智能合约分类处理。这样可以使得基于不用区块链平台开发的智能合约都可以执行,可以复用该智能合约。若需要在不同的区块链平台上运行同样的智能合约,不需要重复开发适应不同区块链平台的智能合约,可以降低智能合约开发成本。同时,编译后的字节码相同,执行时消耗的资源(gas)也相同,可以做到对账户资源的统一管理。
附图说明
图1为本申请提供的一种多智能合约虚拟机实现方法的示意图;
图2(a)为本申请提供的一种多智能合约虚拟机的架构示意图;
图2(b)为本申请提供的另一种多智能合约虚拟机的架构示意图;
图3为本申请提供的一种多智能合约虚拟机的内部结构示意图;
图4为本申请提供的一种基于多智能合约虚拟机的系统架构示意图;
图5为本申请提供的一种基于多智能合约虚拟机的系统结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本申请的说明书和权利要求书及上述附图中的术语:“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或模块的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或模块,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或模块。
目前的区块链平台(如Ethereum、EOS、Libra)支持智能合约,该智能合约可以提供一种方法,根据一组固定的规则在互不信任的各方之间执行交易。这些合约通常是用高级编程语言(如solidity)编写的程序,随后被编译为可以由区块链虚拟机解释的字节码。
目前的智能合约虚拟机都只支持一种或一类语言,如Ethereum平台的虚拟机(EVM)只支持solidity语言,EOS平台的虚拟机(EOS-VM)只支持C语言系列,Libra平台的虚拟机(Libra-VM)只支持MOVE语言。这样基于一个区块链平台开发的智能合约无法跨平台执行,不利于智能合约的复用。若需要在不同的区块链平台上运行同样的智能合约,需要以不同语言的代码对同样的智能合约内容进行编写,这样增加了合约开发成本。同时,不同版本合约在不同的区块链上执行时消耗的资源(gas)不同,造成资源成本消耗难以统一。
现有的多智能合约虚拟机也只是通过接口调用不同的虚拟机执行引擎,没有将虚拟机内部结构做优化,这样执行效率低,而且经常出现异常错误或者歧义。
因此,请参见图1,本申请实施例一提供了一种多智能合约虚拟机实现方法。该多智能合约虚拟机为基于区块链的虚拟机(blockChain virtual machine,BVM)。需要说明的是,本申请中的多智能合约虚拟机,可以支持至少两种智能合约,因此,称作为多智能合约虚拟机。
BFR(blockChain Framework,BFR)是BVM的编译架构,负责BVM中智能合约的编译,合约进入BFR模块之后,经过BFR前端、优化、后端编译处理,最终编译为可执行的机器码,运行在区块链上。
该方法包括:
101、获取智能合约及与智能合约相关的参数。
获取智能合约,以及与智能合约相关的参数。该获取的方式可以是接收用户输出的智能合约。该与智能合约相关的参数具体可以包括但不限于:智能合约采用的语言、运行的虚拟机的类别、智能合约的类别、智能合约的权限。
102、根据智能合约及与智能合约相关的参数确定智能合约对接的虚拟机控制器。
根据智能合约,以及智能合约相关的参数确定智能合约对接的虚拟机控制器。具体的,可以确定该智能合约对接的虚拟机接口类别,每个虚拟机控制器对应一个虚拟机接口类别。根据该虚拟机接口类别可以确定唯一的虚拟机控制器。
103、将智能合约输入至与智能合约对应的虚拟机控制器,并监控智能合约的执行状态。
将该智能合约输入至与该智能合约对应的虚拟机控制器中,监控该智能合约的执行状态。
104、编译智能合约,输出与智能合约相应的中间字节码文件。
编译该智能合约,包括预处理、语法以及语义的分析。从而输出与智能合约响应的中间字节码文件。
优选的,在输出该中间字节码文件之前,还可以对该中间字节码文件做相应的优化处理。
105、根据中间字节码文件按照预设指令标准生成机器码。
根据该中间字节码文件按照预设指令标准生成机器码。
在生成机器码之后,可以通过虚拟机控制器输出该机器码,并更新智能合约的执行状态。
106、多智能合约虚拟机与区块链客户端交互,修改区块链状态。
多智能合约虚拟机可以调用区块链环境接口与区块链客户端进行交互。区块链客户端为区块链的客户端软件,提供了一个交互式命令控制台,其中包含了区块链的各种功能。多智能合约虚拟机可以通过该区块链客户端,根据该机器码对区块链的状态进行修改。
具体的,该区块链客户端通过区块链环境接口对区块链的状态进行修改。区块链环境接口为区块链提供的一套上下文环境的相关接口标准,只要实现了这个接口标准,就能够和区块链进行交互并安全运行。
本申请实施例一提供的这种方法可以根据智能合约及与该智能合约相关的参数判断该智能合约对接的虚拟机控制器,然后将该智能合约输入至与该智能合约对接的虚拟机控制器,并监控所述智能合约的执行状态。这样对于不同种类的智能合约能够选择与该智能合约对应类别的虚拟机控制器,从而将不同的智能合约分类处理。这样可以使得基于不用区块链平台开发的智能合约都可以执行,可以复用该智能合约。若需要在不同的区块链平台上运行同样的智能合约,不需要重复开发适应不同区块链平台的智能合约,可以降低开发成本。同时,编译后的字节码相同,执行时消耗的资源(gas)也相同,可以做到对账户资源的统一管理。
本申请实施例二提供了一种多智能合约虚拟机,该多智能合约虚拟机用于实现上述实施例一中的多智能合约虚拟机实现方法。请参见图2(a)与图2(b),图2(a)与图2(b)分别提供了该多智能合约虚拟机的两种具体实现方式。
请参见图2(a)所示的多智能合约虚拟机架构示意图,在第一种实现方式中,该多智能合约虚拟机20包括:
底层虚拟机201,用于获取智能合约及与所述智能合约相关的参数。该底层虚拟机是一种类似于WebAssembly(WASM)的虚拟机。
拔插控制器202,用于根据所述智能合约及与所述智能合约相关的参数确定所述智能合约对接的虚拟机控制器。该插拔控制器202,可以兼容各种虚拟机的控制器,控制不同虚拟机的安装和卸载。
虚拟机控制器203,用于当所述插拔控制器将所述智能合约输入至与所述智能合约对接的虚拟机控制器时,监控所述智能合约的执行状态。
请参见图2,该虚拟机控制器203可以包含适配多个平台的虚拟机控制器。示例性的,该虚拟机控制器203包括EVM控制器2031,EOS-VM控制器2032,Libra-VM控制器2033,其他虚拟机控制器2034。需要说明的是,此处仅为列举,该虚拟机控制器203还可以包含适配于其他虚拟机的控制器,此处不应理解为本申请的限制。
编译适配器204,用于编译所述智能合约,输出与所述智能合约相应的中间字节码文件。还用于根据所述中间字节码文件按照预设指令标准生成机器码。该编译适配器204,具体用于对所述智能合约进行预处理,以及语法、语义分析。还用于根据预设条件对所述中间字节码文件进行优化。该编译适配器204,适配不同的虚拟机标准,高级智能合约语言编译后产生相同的字节码,以及字节码和统一机器码的适配映射。该编译适配器204,具体用于根据该适配映射根据该中间字节码文件生成机器码。
请参见图2(b)所示的多智能合约虚拟机架构示意图,在第二种实现方式中,该多智能合约虚拟机21包括:
接入层211,用于获取用户输入的智能合约及与所述智能合约相关的参数。
适配层212是策略层,负责调度虚拟机控制器213,对输入的智能合约和参数进行分析,决定调度的上层虚拟机控制器213的类别,并生成调度指令。
虚拟机控制器213,用于响应来自适配层212的调度指令,并将将智能合约编译为与智能合约虚拟机相应的字节码文件,并将结果返回给适配层212。
该适配层212,对返回的字节码做适配分析,调用适配映射模块,将返回的字节码文件映射解析为统一的中间字节码文件,并对统一的中间字节码文件进行优化处理,输出经过优化后的统一的中间字节码;将优化后统一中间字节码文件输入到统一编译层214。
更进一步的,该虚拟机控制器213可以包含适配多个平台的虚拟机控制器。示例性的,该虚拟机控制器213包括EVM控制器2131,EOS-VM控制器2132,Libra-VM控制器2133,其他虚拟机控制器2134。需要说明的是,此处仅为列举,该虚拟机控制器213还可以包含适配于其他虚拟机的控制器,此处不应理解为本申请的限制。
适配层212,可以兼容各种虚拟机的控制器,控制不同虚拟机的安装和卸载。当有新的虚拟机标准接入时,需要更新该适配层212中的适配映射模块(图中未示出),增加相应标准的字节码到统一字节码的映射单元(图中未示出)。
虚拟机控制器213,用于当所述适配层212将所述智能合约输入至与所述智能合约对接的虚拟机控制器时,监控所述智能合约的执行状态。
统一编译层214,用于根据所述优化处理后的统一的中间字节码文件按照预设指令标准生成机器码,并且设置执行该机器码中每个指令消耗的资源。
本申请提供的这种多智能合约虚拟机可以根据智能合约及与该智能合约相关的参数判断该智能合约对接的虚拟机控制器,然后将该智能合约输入至与该智能合约对接的虚拟机控制器,并监控所述智能合约的执行状态。这样对于不同种类的智能合约能够选择与该智能合约对应类别的虚拟机控制器,从而将不同的智能合约分类处理。这样可以使得基于不用区块链平台开发的智能合约都可以执行,可以复用该智能合约。若需要在不同的区块链平台上运行同样的智能合约,不需要重复开发适应不同区块链平台的智能合约,可以降低发成本。同时,编译后的字节码相同,执行时消耗的资源也相同,可以做到对账户资源的统一管理。
本申请实施例三提供了一种多智能合约虚拟机30,该多智能合约虚拟机30用于实现上述实施例一中的多智能合约虚拟机实现方法。请参见图3所示的多智能合约虚拟机的内部结构示意图。该多智能合约虚拟机30包括:
前端模块301,用于获取智能合约及与所述智能合约相关的参数;
前端模块301,还用于将所述智能合约输入至与所述智能合约对接的虚拟机控制器,并监控所述智能合约的执行状态。
前端模块301,还用于编译所述智能合约,输出与所述智能合约相应的中间字节码文件。
具体的,该前端模块包括:预处理子模块3011,语法分析子模块3012,语义分析子模块3013,和中间代码生成子模块3014。
该预处子模块3011,具体可以根据不同的合约标准进行分析,包括:
1)对合约的解析,针对各类虚拟机的合约语言和编译标准指定不同的分析架构,对分析架构采用统一的分析语言描述。
2)代码检查,适配各类虚拟机的类型检查。
3)安全检查,针对合约安全性的检查。
该语法分析子模块3012,具体可以基于解析框架,生成抽象语法树(abstrctsynatax tree,AST)。该语义分析子模块3013,具体可以对语法分析的结果进行语义分析。
该中间代码生成子模块3014,具体可以生成中间代码,该中间代码是一种统一的文本格式。该中间代码生成子模块3014,与优化器接口,生成的中间代码输入到优化器。
优化模块302,用于根据预设条件对所述中间字节码文件进行优化。具体的,该预设条件可以为内联、重新组合表达式、移动循环等方面。不受特定编程语言或特定虚拟机的限制。
后端模块303,用于根据所述中间字节码文件按照预设指令标准生成机器码。该后端模块可以为任何给定目标机器生成最佳的机器码。该后端模块303,具体可以分为指令适配子模块3031,指令选择子模块3032、指定调度子模块3033和指令执行子模块2034。
指令适配子模块3031,用于针对不同的续集的指令集进行分析,判断现有底层虚拟机是否有相关指令,如果有则直接按照一有标准翻译为机器码;若没有,则增加新的指令集合执行与此指令相对应的资产花费值。
指令选择子模块3032:用于根据优化后的代码选择每句代码对应的指令。
指令调度子模块3033,指令执行中依赖该指令调度子模块3033的调用。
指令执行子模块3034,用于执行该每句代码对应的指令。
本申请实施例四还提供了一种基于多智能合约虚拟机的系统40,请参见图4,该系统包括本申请实施例二提供的多智能合约虚拟机20,该多智能合约虚拟机20请参照实施例二进行理解,此处不再赘述。该系统还包括区块链环境接口402和区块链客户端401。
该区块链环境接口402为区块链提供的一套上下文环境的相关接口标准,只要实现了这个接口标准,多智能合约虚拟机20就能够和区块链客户端401进行交互并安全运行。
该区块链客户端401为区块链的客户端软件,提供了一个交互式命令控制台,包含了区块链的各种功能。
本申请实施例五提供了一种基于多智能合约虚拟机的系统50,请参见图5。该系统包括本申请实施例三提供的多智能合约虚拟机30。该多智能合约虚拟机30可以参照实施例三进行理解,此处不再赘述。
该基于多智能合约虚拟机的系统50还可以包括区块链501、区块链客户端502和区块链环境接口503。
该多智能合约虚拟机30可以与区块链501进行交互。具体的:
1)通过区块链环境接口503与区块链501进行交互,该区块链环境接口503定义了程序如何与区块链501交互的过程,使得多智能合约虚拟机30可以读写区块链501上的信息。
2)区块链客户端502在执行智能合约中只负责与区块链501上信息的交互,把对合约的解析和执行任务交给多智能合约虚拟机30,两者通过区块链环境接口503通信。其中部署智能合约的地址配置如下:
针对部署合约:调用区块链客户端的地址标志映射接口,地址映射接口标识规则为:虚拟机标识_原有地址映射与区块链新分配的地址。
针对调用合约:根据映射标识参数,调用标识查询接口,找到其区块链上的地址进行通信。
本申请还提供了一种非易失性计算机可读存储介质,所述非易失性计算机可读存储介质又计算机可执行指令,所述极端及可执行指令被一个或多个处理器执行时,可使得所述一个或多个处理器执行如本申请的实施一中所述的方法。
由上述实施例可知,本申请提供的多智能合约虚拟机实现方式、多智能合约虚拟机以及基于多智能合约虚拟机的系统具有如下优势:
(1)支持不同的智能合约虚拟机。
(2)可以实现针对现有智能合约的复用,不需要为适应区块链平台重新开发,节约开发成本。
(3)在虚拟机的内部结构中对不同种类的虚拟机进行了适配,在编译、执行阶段针对不同标准做了适配,提高了执行效率。
(4)在区块链客户端模块中通过标识符体系解决了与链交互中可能存在的地址冲突问题。
(5)只要编译后的字节码相同,即使不同的合约版本,消耗的资源相同,做到了对账户资源的统一管理。
以上对本发明实施例所提供的一种多智能合约虚拟机实现方法、多智能合约虚拟机及系统进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。

Claims (14)

1.一种多智能合约虚拟机实现方法,其特征在于,所述方法包括:
获取智能合约及与所述智能合约相关的参数;
根据所述智能合约及与所述智能合约相关的参数确定所述智能合约对接的虚拟机控制器,包括:根据所述智能合约及与所述智能合约相关的参数确定所述智能合约对接的虚拟机接口类别;根据所述虚拟机接口类别确定所述智能合约对接的虚拟机控制器;
将所述智能合约输入至与所述智能合约对接的虚拟机控制器,并监控所述智能合约的执行状态;
编译所述智能合约,输出与所述智能合约相应的中间字节码文件,所述编译所述智能合约包括:
对所述智能合约进行预处理,以及语法、语义分析;
所述编译所述智能合约,输出与所述智能合约相应的中间字节码文件之后,所述方法还包括:根据预设条件对所述中间字节码文件进行优化;
根据所述中间字节码文件按照预设指令标准生成机器码。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
调用区块链环境接口与区块链客户端进行交互;
通过所述区块链客户端,根据所述机器码对所述区块链的状态进行修改。
3.根据权利要求2所述的方法,其特征在于,通过所述区块链客户端,根据所述机器码对所述区块链的状态进行修改包括:
通过区块链环境接口对所述区块链的状态进行修改。
4.根据权利要求1-3任意一项所述的方法,其特征在于,与所述智能合约相关的参数包括:智能合约采用的语言、运行的虚拟机的类别、智能合约的类别、智能合约的权限。
5.一种多智能合约虚拟机,其特征在于,所述多智能合约虚拟机包括:底层虚拟机、插拔控制器、虚拟机控制器、编译适配器,
所述底层虚拟机,用于获取智能合约及与所述智能合约相关的参数;
所述插拔控制器,用于根据所述智能合约及与所述智能合约相关的参数确定所述智能合约对接的虚拟机控制器,具体用于根据所述智能合约及与所述智能合约相关的参数确定所述智能合约对接的虚拟机接口类别,并根据所述虚拟机接口类别确定所述智能合约对接的虚拟机控制器;
所述虚拟机控制器,用于当所述插拔控制器将所述智能合约输入至与所述智能合约对接的虚拟机控制器时,监控所述智能合约的执行状态;
所述编译适配器,用于编译所述智能合约,输出与所述智能合约相应的中间字节码文件;
所述编译适配器,还用于根据所述中间字节码文件按照预设指令标准生成机器码;
所述编译适配器,具体用于对所述智能合约进行预处理,以及语法、语义分析;
所述编译适配器,还用于根据预设条件对所述中间字节码文件进行优化。
6.一种多智能合约虚拟机,其特征在于,所述多智能合约虚拟机包括:
接入层、适配层、虚拟机控制器、统一编译器,
所述接入层,用于获取智能合约及与所述智能合约相关的参数;
所述适配层,用于根据所述智能合约及与所述智能合约相关的参数确定所述智能合约对接的虚拟机控制器,并生成调度指令;
所述虚拟机控制器,用于当所述适配层将所述智能合约输入至与所述智能合约对接的虚拟机控制器时,响应所述适配层的所述调度指令,并将所述智能合约编译为与所述智能合约虚拟机对应的字节码文件;
所述适配层,还用于将所述字节码文件映射解析为统一的中间字节码文件,且对所述统一的中间字节码文件执行优化处理,并输出优化处理后的统一的中间字节码文件;
所述统一编译器,用于根据所述优化处理后的统一的中间字节码按照预设指令标准生成机器码,并设置执行所述机器码中每个指令消耗的资源。
7.一种多智能合约虚拟机,其特征在于,所述多智能合约虚拟机包括:
前端模块、后端模块,
所述前端模块,用于获取智能合约及与所述智能合约相关的参数;
所述前端模块,用于根据所述智能合约及与所述智能合约相关的参数确定所述智能合约对接的虚拟机控制器,包括根据所述智能合约及与所述智能合约相关的参数确定所述智能合对接的虚拟机接口类别,并根据所述虚拟机接口类别确定所述智能合约对接的虚拟机控制器;
所述前端模块,用于将所述智能合约输入至与所述智能合约对接的虚拟机控制器,并监控所述智能合约的执行状态;
所述前端模块,用于编译所述智能合约,输出与所述智能合约相应的中间字节码文件;
所述前端模块,具体用于对所述智能合约进行预处理,以及语法、语义分析;
所述后端模块,用于根据所述中间字节码文件按照预设指令标准生成机器码;
优化模块,根据预设条件对所述中间字节码文件进行优化。
8.根据权利要求7所述的多智能合约虚拟机,其特征在于,与所述智能合约相关的参数包括:智能合约采用的语言、运行的虚拟机的类别、智能合约的类别、智能合约的权限。
9.一种系统,其特征在于,所述系统包括如权利要求5或6所述的多智能合约虚拟机,所述系统还包括:区块链客户端,
所述多智能合约虚拟机通过区块链环境接口与所述区块链客户端进行交互;
所述区块链客户端,用于根据所述机器码对所述区块链的状态进行修改。
10.根据权利要求9所述的系统,其特征在于,
所述区块链客户端,具体用于通过区块链环境接口对所述区块链的状态进行修改。
11.一种系统,其特征在于,所述系统包括如权利要求7所述的多智能合约虚拟机,所述系统还包括:区块链客户端,所述多智能合约虚拟机通过区块链环境接口与所述区块链客户端进行交互;
所述区块链客户端,用于根据所述机器码对所述区块链的状态进行修改。
12.根据权利要求11所述的系统,其特征在于,
所述区块链客户端,具体用于通过区块链环境接口对所述区块链的状态进行修改。
13.一种非易失性计算机可读存储介质,其特征在于,所述非易失性计算机可读存储介质包括计算机可执行指令,所述计算机可执行指令被一个或多个处理器执行时,可使得所述一个或多个处理器执行如权利要求1至4任意一项所述的方法。
14.一种芯片,其特征在于,所述芯片包括:处理器,所述处理器与存储器耦合,所述存储器用于存储计算机程序或指令,所述处理器用于执行所述存储器中的计算机程序或指令以实现如权利要求1-4任意一项所述的方法。
CN202010589506.6A 2020-06-24 2020-06-24 多智能合约虚拟机实现方法、多智能合约虚拟机及系统 Active CN111736954B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010589506.6A CN111736954B (zh) 2020-06-24 2020-06-24 多智能合约虚拟机实现方法、多智能合约虚拟机及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010589506.6A CN111736954B (zh) 2020-06-24 2020-06-24 多智能合约虚拟机实现方法、多智能合约虚拟机及系统

Publications (2)

Publication Number Publication Date
CN111736954A CN111736954A (zh) 2020-10-02
CN111736954B true CN111736954B (zh) 2024-01-05

Family

ID=72651016

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010589506.6A Active CN111736954B (zh) 2020-06-24 2020-06-24 多智能合约虚拟机实现方法、多智能合约虚拟机及系统

Country Status (1)

Country Link
CN (1) CN111736954B (zh)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112487092B (zh) * 2020-12-03 2024-06-18 深圳前海微众银行股份有限公司 一种基于区块链的智能合约调用方法及装置
CN112685136B (zh) * 2021-01-07 2024-08-16 腾讯科技(深圳)有限公司 一种智能合约运行方法、装置、设备及存储介质
CN112529711B (zh) * 2021-02-07 2021-05-14 腾讯科技(深圳)有限公司 基于区块链虚拟机复用的交易处理方法及装置
CN113067822B (zh) * 2021-03-19 2023-11-10 中国工商银行股份有限公司 基于区块链的信息处理方法、装置、设备、介质和产品
CN113220326B (zh) * 2021-05-11 2022-09-16 支付宝(杭州)信息技术有限公司 智能合约升级方法及区块链系统
CN114327403A (zh) * 2021-12-24 2022-04-12 杭州趣链科技有限公司 智能合约的开发方法、装置及电子设备
CN115022312B (zh) * 2022-03-30 2024-09-20 中国信息通信研究院 多智能合约引擎的实现方法、装置、电子设备及存储介质
CN115174589B (zh) * 2022-05-20 2023-11-03 网易(杭州)网络有限公司 区块链虚拟机的选择方法、装置、电子设备及存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106598579A (zh) * 2016-12-06 2017-04-26 北京果仁宝科技有限公司 区块链上集成动态类型编程语言方法和装置
CN110297689A (zh) * 2019-05-06 2019-10-01 百度在线网络技术(北京)有限公司 智能合约执行方法、装置、设备及介质
CN111176791A (zh) * 2019-12-31 2020-05-19 杭州趣链科技有限公司 一种基于多虚拟机区块链平台跨虚拟机调用方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10733152B2 (en) * 2018-12-29 2020-08-04 Alibaba Group Holding Limited System and method for implementing native contract on blockchain

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106598579A (zh) * 2016-12-06 2017-04-26 北京果仁宝科技有限公司 区块链上集成动态类型编程语言方法和装置
CN110297689A (zh) * 2019-05-06 2019-10-01 百度在线网络技术(北京)有限公司 智能合约执行方法、装置、设备及介质
CN111176791A (zh) * 2019-12-31 2020-05-19 杭州趣链科技有限公司 一种基于多虚拟机区块链平台跨虚拟机调用方法

Also Published As

Publication number Publication date
CN111736954A (zh) 2020-10-02

Similar Documents

Publication Publication Date Title
CN111736954B (zh) 多智能合约虚拟机实现方法、多智能合约虚拟机及系统
CN110149800B (zh) 一种用于处理与源程序的源代码相关联的抽象语法树的装置
US8615750B1 (en) Optimizing application compiling
US20060265469A1 (en) XML based scripting framework, and methods of providing automated interactions with remote systems
US20110126179A1 (en) Method and System for Dynamic Patching Software Using Source Code
CN111913741B (zh) 对象拦截方法、装置、介质及电子设备
CN115639980A (zh) 一种低代码平台可拖拽的前端逻辑编排方法及装置
CN112667287A (zh) 规则文件的创建方法、装置、设备及计算机可读存储介质
CN111506314A (zh) 项目开发的方法、装置、服务器及介质
CN111610974A (zh) 一种面向边缘计算的跨系统平台编译方法
CN101499015A (zh) 一种高级语言转换成其它高级语言的方法及转换器
CN115390846A (zh) 编译构建方法、装置、电子设备和存储介质
WO2012051844A1 (zh) 智能网平台、业务执行方法和分析业务异常的方法
Wood et al. Triton: a domain specific language for cyber-physical systems
CN114115884B (zh) 一种编程服务的管理方法以及相关装置
CN109947407B (zh) 一种数据获取方法及装置
CN110110299B (zh) 文本变换方法、装置以及服务器
CN110659022A (zh) 一种基于Java自动调用Python脚本的方法
US11429358B2 (en) Representing asynchronous state machine in intermediate code
CN114816357A (zh) 一种服务于流程银行的服务编排系统
JP2007122187A (ja) プログラム・コード生成装置
EP4204960A1 (en) Thread-local return structure for asynchronous state machine
CN114489653A (zh) 基于编译器的数据处理方法、装置以及可读存储介质
Laarman Achieving QVTO & ATL Interoperability: An Experience Report on the Realization of a QVTO to ATL Compiler
CN117331541B (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
GR01 Patent grant
GR01 Patent grant