CN114116134A - 智能合约部署和执行方法、设备及存储介质 - Google Patents

智能合约部署和执行方法、设备及存储介质 Download PDF

Info

Publication number
CN114116134A
CN114116134A CN202111457391.6A CN202111457391A CN114116134A CN 114116134 A CN114116134 A CN 114116134A CN 202111457391 A CN202111457391 A CN 202111457391A CN 114116134 A CN114116134 A CN 114116134A
Authority
CN
China
Prior art keywords
contract
virtual machine
intelligent
intelligent contract
transaction
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
CN202111457391.6A
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.)
Shanghai Jiansu Network Technology Co ltd
Original Assignee
Shanghai Yanxiao Industrial Development 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 Shanghai Yanxiao Industrial Development Co ltd filed Critical Shanghai Yanxiao Industrial Development Co ltd
Priority to CN202111457391.6A priority Critical patent/CN114116134A/zh
Publication of CN114116134A publication Critical patent/CN114116134A/zh
Pending legal-status Critical Current

Links

Images

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
    • 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/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
    • 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/4557Distribution of virtual machine instances; Migration and load balancing

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Computing Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

本发明提供了智能合约部署和执行方法、设备及存储介质,通过在WASM虚拟机部署支持多种合约语言的合约虚拟机实例,在区块链上部署对应该多种合约语言的第二智能合约,在接收到对任意一种第二智能合约的调用请求时,调用第一智能合约和第二智能合约,通过在WASM虚拟机中执行第一智能合约,调用支持第二智能合约的区块链合约虚拟机实例来执行第二智能合约。利用本发明实施例的方案,通过在WASM虚拟机中实现多种具体的合约虚拟机实例,从而可以在WASM虚拟机的智能合约之上实现对多种合约语言实现的智能合约的部署和调用,而无需对区块链底层架构进行适配重构,因此在实现智能合约融合复用方面具有较高可行性。

Description

智能合约部署和执行方法、设备及存储介质
技术领域
本发明涉及区块链技术领域,具体地说,涉及智能合约部署和执行方法、设备及存储介质。
背景技术
虚拟机VM(Virtual Machine),在计算机科学中的体系结构里,是指一种特殊的软件,可以在计算机平台和终端用户之间创建一种环境,而终端用户则是基于虚拟机这个软件所创建的环境来操作其它软件。
伴随区块链出现衍生出来的区块链虚拟机首次被以太坊引入到区块链技术集,并被扩展到基于其他合约语言的虚拟机中。
区块链虚拟机是智能合约代码的执行器。具体地,当智能合约被编译成二进制文件后,被部署到区块链上,并通过区块链平台部署的区块链虚拟机支持合约的执行与调用,调用时根据合约地址获取到智能合约代码,生成环境后载入到区块链虚拟机中运行,修改当前区块链上的数据(状态)。被修改的数据,会被共识,确保一致性。
但是,各区块链系统在实现区块链虚拟机时,是与智能合约的合约语言相关的,每一种区块链虚拟机能够对相应合约语言的智能合约进行执行与调用,这也导致使用智能合约实现的项目生态的隔离。
发明内容
针对现有技术中的问题,本发明的目的在于提供智能合约部署和执行方法、设备及存储介质,实现跨区块链系统的智能合约融合复用。
本发明的实施例提供一种基于区块链平台的智能合约部署方法,在区块链平台中部署WASM虚拟机,在WASM虚拟机中部署分别支持不同合约语言的多种合约虚拟机实例,并在区块链中部署WASM虚拟机所支持的第一智能合约,方法包括:
获取基于目标合约语言的合约部署交易,目标合约语言对应于多种虚拟机实例中的目标合约虚拟机实例;
根据合约部署交易在区块链中调用第一智能合约;
在WASM虚拟机中执行第一智能合约,通过执行第一智能合约解析合约部署交易,得到基于目标合约语言的第二智能合约;
将第二智能合约部署到区块链上。
可选地,通过执行第一智能合约解析合约部署交易,得到基于目标合约语言的第二智能合约,包括:
通过执行第一智能合约解析合约部署交易,得到基于目标合约语言的字节码合约文件、以及利用字节码文件形成的所述第二智能合约。
本发明实施例还提供一种基于区块链平台的智能合约执行方法,在区块链平台中部署WASM虚拟机,在WASM虚拟机中部署分别支持不同合约语言的多种合约虚拟机实例,并在区块链中部署WASM虚拟机所支持的第一智能合约、及多种合约虚拟机实例所分别支持的多种实例智能合约,方法包括:
在区块链中对多种实例智能合约中的第二智能合约及第一智能合约发起调用;
在WASM虚拟机中执行第一智能合约,通过执行第一智能合约在多种合约虚拟机实例中调用支持第二智能合约的目标合约虚拟机实例,利用目标合约虚拟机实例执行第二智能合约,输出执行结果;
将执行结果上传到区块链。
可选地,在WASM虚拟机中执行第一智能合约之前,方法还包括:
利用交易实例对调用的第二智能合约进行实例化,获得合约交易;
利用合约交易对调用的第一智能合约进行实例化,获得虚拟机实例调用交易;
在WASM虚拟机中执行第一智能合约,通过执行第一智能合约在多种合约虚拟机实例中调用支持第二智能合约的目标合约虚拟机实例,利用目标合约虚拟机实例执行第二智能合约,包括:
在WASM虚拟机中执行虚拟机实例调用交易,调用支持第二智能合约的合约类型的目标合约虚拟机实例,利用目标合约虚拟机实例执行合约交易。
可选地,利用交易实例对调用的第二智能合约进行实例化,获得合约交易,包括:
在调用的第二智能合约为字节码文件的情况下,利用交易实例对字节码文件进行实例化,获得基于字节码实现的合约交易;
利用目标合约虚拟机实例执行所述合约交易,包括:
利用目标合约虚拟机实例将字节码转译为机器码,并执行机器码。
可选地,利用合约交易对调用的第一智能合约进行实例化,获得虚拟机实例调用交易,包括:
在调用的第一智能合约为字节码文件的情况下,利用合约交易对字节码文件进行实例化,获得基于字节码的虚拟机实例调用交易;
在WASM虚拟机中执行所述虚拟机实例调用交易,调用支持第二智能合约的目标合约虚拟机实例,包括:
利用WASM虚拟机将所述字节码转译为机器码,并执行机器码,通过执行机器码调用支持第二智能合约的目标合约虚拟机实例。
可选地,方法还包括:
在区块链中对多种实例智能合约中的第二智能合约和第一智能合约发起调用之前,接收交易发起方基于第二智能合约的交易请求;
在区块链中对多种实例智能合约中的第二智能合约发起调用,包括:
响应于交易请求,在区块链中对多种实例智能合约中的第二智能合约发起调用,还调用第一智能合约。
本发明实施例还提供一种基于区块链平台的智能合约部署装置,在区块链平台中部署WASM虚拟机,在WASM虚拟机中部署分别支持不同合约语言的多种合约虚拟机实例,并在区块链中部署WASM虚拟机所支持的第一智能合约,装置包括:
第一获取模块,获取基于目标合约语言的合约部署交易,目标合约语言对应于多种虚拟机实例中的目标合约虚拟机实例;
第一调用模块,根据合约部署交易在区块链中调用第一智能合约;
第一执行模块,在WASM虚拟机中执行第一智能合约,通过执行第一智能合约解析合约部署交易,得到基于目标合约语言的第二智能合约;
部署模块,将第二智能合约部署到区块链上。
本发明实施例还提供一种基于区块链平台的智能合约执行装置,在区块链平台中部署WASM虚拟机,在WASM虚拟机中部署分别支持不同合约语言的多种合约虚拟机实例,并在区块链中部署WASM虚拟机所支持的第一智能合约、及多种合约虚拟机实例所分别支持的多种实例智能合约,装置包括:
第二调用模块,在所述区块链中对所述多种实例智能合约中的第二智能合约及所述第一智能合约发起调用;
第二执行模块,在WASM虚拟机中执行第一智能合约,通过执行第一智能合约在多种合约虚拟机实例中调用支持第二智能合约的目标合约虚拟机实例,利用目标合约虚拟机实例执行第二智能合约,输出执行结果;
上传模块,将执行结果上传到区块链。
本发明的实施例还提供一种电子设备,包括:
处理器;
存储器,其中存储有处理器的可执行指令;
其中,处理器配置为经由执行可执行指令来执行上述基于区块链平台的智能合约部署方法的步骤、或基于区块链平台的智能合约执行方法的步骤。
本发明的实施例还提供一种计算机可读存储介质,用于存储程序,程序被执行时实现上述基于区块链平台的智能合约部署方法的步骤、或基于区块链平台的智能合约执行方法的步骤。
本发明的目的在于提供基于区块链平台的智能合约部署和执行方法、设备及存储介质,通过在WASM虚拟机部署支持多种合约语言的合约虚拟机实例,在区块链上部署对应该多种合约语言的第二智能合约,在接收到对任意一种合约语言的第二智能合约的调用请求时,调用第一调用能够支持第二智能合约的合约类型的区块链合约虚拟机实例来执行第二智能合约,将执行结果存储到区块链上。利用本发明实施例的方案,通过在WASM虚拟机中实现多种具体的合约虚拟机实例,从而可以在WASM虚拟机的智能合约之上实现对多种合约语言实现的智能合约的部署和调用,而无需对区块链底层架构进行适配重构,本发明实施例在实现跨区块链智能合约融合复用方面具有较高可行性。
附图说明
通过阅读参照以下附图对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显。
图1是本发明实施例提供的基于区块链平台的WASM虚拟机结构示意图;
图2是本发明实施例提供的基于区块链平台的智能合约部署方法的流程图;
图3是本发明实施例提供的基于区块链平台的智能合约执行方法的流程图之一;
图4是本发明实施例提供的基于区块链平台的智能合约执行方法的流程图之二;
图5是本发明实施例提供的基于区块链平台的智能合约执行方法的流程图之三;
图6是本发明实施例提供的基于区块链平台的智能合约部署模块示意图;
图7是本发明实施例提供的基于区块链平台的智能合约执行模块示意图之一;
图8是本发明实施例提供的基于区块链平台的智能合约执行模块示意图之二;
图9是本发明实施例提供的基于区块链平台的智能合约执行模块示意图之三;
图10是本发明的电子设备结构示意图。
具体实施方式
现在将参考附图更全面地描述示例实施方式。然而,示例实施方式能够以多种形式实施,且不应被理解为限于在此阐述的实施方式。相反,提供这些实施方式使本发明全面和完整,并将示例实施方式的构思全面地传达给本领域的技术人员。
附图仅为本发明的示意性图解,并非一定是按比例绘制。图中相同的附图标记表示相同或类似的部分,因而将省略对它们的重复描述。附图中所示的一些方框图是功能实体,不一定必须与物理或逻辑上独立的实体相对应。可以采用软件形式来实现这些功能实体,或在一个或多个硬件转发模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。
此外,附图中所示的流程仅是示例性说明,不是必须包括所有的步骤。例如,有的步骤可以分解,有的步骤可以合并或部分合并,且实际执行的顺序有可能根据实际情况改变。具体描述时使用的“第一”、“第二”以及类似的词语并不表示任何顺序、数量或者重要性,而只是用来区分不同的组成部分。需要说明的是,在不冲突的情况下,本发明的实施例及不同实施例中的特征可以相互组合。
本发明人对现有多种区块链虚拟机进行研究,现在存在如下三种区块链多虚拟机及合约语言融合的解决方案:
长安链ChainMaker,提供集成多虚拟机及合约语言的开源解决方案,但这些集成的虚拟机并没有统一通用流程和规范。
Hyperledger Fabric,其智能合约方面简称为链码,仅支持Go语言,并且集成的Go语言虚拟机是基于Docker容器实现的,并不支持多合约生态。
FISCO-BCOS,由开源项目以太坊重度重构得到,其底层原生支持以太坊虚拟机EVM(Ethereum Virtual Machine),没有通用的横向扩展接口和通用流程规范,在拓展其他技术架构的虚拟机时,需要对底层实现的架构做大量修改和适配重构。
因此,在业界尚不存在一种可行性较高的多合约融合复用解决方案。
进一步思考,区块链虚拟机需要适用更复杂广泛且通用的场景,即图灵完备性。从软件模拟的角度来说,虚拟机是用软件进行模拟特定机器运行的机制,而机器的输入便是人类的代码指令,但是从类人类的高级语言到机器可以执行的低级语言,再到虚拟机运行指令运转并更改状态,需要系列的处理流程。而这些差异便是区块链虚拟机和传统虚拟机的不同之处。
本发明人注意到,在各类区块链虚拟机实现技术中,WASM(WebAssembly)虚拟机是其中一种区块链虚拟机,采用WASM实现。WASM是一个实验性的低阶程序语言,是关于概念的机器语言,支持采用C/C++作为实作目标进行编译,这种特性使其能够具有更广泛的通用性。
WASM作为一种低阶程序语言,不仅能用于智能合约编码并通过WASM虚拟机实现对合约的执行和调用,也能够用于在该低阶程序语言之上实现其他类型的区块链合约虚拟机实例,使其具有解决跨区块链生态的多合约融合复用的可能。
因此,本发明实施例提出,在WASM虚拟机中部署多个分别支持多种合约语言的合约虚拟机实例,并在区块链中部署该WASM所支持的第一智能合约实现多种合约虚拟机实例及对应智能合约的迁移和部署。
其中,第一智能合约用于定义对这些合约虚拟机实例所支持第二智能合约的部署和调用,这样能够在第一智能合约之上实现对多个合约虚拟机实例的部署和调用。
在部署阶段,对使用任意一种合约语言的第二智能合约的合约部署交易,可以通过调用第一智能合约并在WASM虚拟机中对合约部署交易执行第一智能合约,解析出第二智能合约,部署到区块链上。
在执行阶段,在接收到对任意一种合约语言的第二智能合约的调用请求时,调用第一智能合约和第二智能合约,通过在WASM虚拟机中执行第一智能合约,调用能够支持第二智能合约的合约类型的区块链合约虚拟机实例来执行第二智能合约,将执行结果存储到区块链上。
利用本发明实施例的方案,通过在WASM虚拟机中实现多种具体的合约虚拟机实例,从而可以在WASM虚拟机的智能合约之上实现对多种合约语言实现的智能合约的部署和调用,而无需对区块链底层架构进行适配重构,本发明实施例在实现跨区块链智能合约融合复用方面具有较高可行性。
在本发明实施例中,参考图1,可以在WASM虚拟机100中部署分别支持不同区块链平台的合约语言的多种合约虚拟机实例,在WASM虚拟机之上进行抽象和实现的多实例异构虚拟机实现,WASM虚拟机提供多种合约虚拟机实例的运行环境。
在图1中,在WASM虚拟机100中部署的合约虚拟机实例分别为基于C++的WASM虚拟机110、基于Solidity的EVM 120、Golang执行引擎130及其他脚本解释引擎,在此不作具体限定。
具体地,开发人员在获取待移植的虚拟机官方文档及规范的情况下,从中提取指令集定义及约束常量定义、以及编解码及相关序列化方法实现,得到网络交易数据解析逻辑实现,用来构造虚拟执行环境和交易结构实例,作为合约虚拟机实例部署在WASM虚拟机内。
图2是本发明的基于区块链平台的智能合约部署方法的一种实施例的流程图,其中区块链平台可以理解成区块链系统的入口,用于部署WASM虚拟机,而WASM虚拟机提供多种合约虚拟机实例的运行环境,并在区块链中部署WASM虚拟机所支持的第一智能合约。
如图2所示,本发明的实施例提供一种基于区块链平台的智能合约部署方法,本方法的执行主体是区块链节点。本方法包括以下步骤:
步骤210:获取基于目标合约语言的合约部署交易,目标合约语言对应于多种虚拟机实例中的目标合约虚拟机实例;
步骤220:根据合约部署交易在区块链中调用第一智能合约;
步骤230:在WASM虚拟机中执行第一智能合约,通过执行第一智能合约解析合约部署交易,得到基于目标合约语言的第二智能合约;
步骤240:将第二智能合约部署到区块链上。
在本实施例中,合约部署交易可以理解为在区块链上部署基于目标合约语言的第二智能合约的交易。第一智能合约为部署第二智能合约的合约,在第一智能合约之上实现对多种合约虚拟机所支持智能合约的部署。
在本发明实施例的应用场景中,用户不需要在不同区块链系统之上,分别根据该情况系统所支持合约语言开发多份智能合约代码再部署,而是能够直接通过该区块链平台在区块链上部署和实现多份智能合约,给用户带来良好的使用体验。
因此,使用本发明实施例,在WASM虚拟机的智能合约之上实现对多种合约语言实现的智能合约的移植和部署,而无需对区块链底层架构进行适配重构,在实现跨区块链智能合约融合复用方面具有较高可行性。
在本发明实施例中,区块链平台提供调用第一智能合约的接口,接收对第二智能合约的合约部署交易,实现获取合约部署交易的一个示例。
在本发明实施例中,通过执行第一智能合约解析合约部署交易,得到基于目标合约语言的第二智能合约,包括:
通过执行第一智能合约解析合约部署交易,得到基于目标合约语言的字节码合约文件、以及利用字节码文件形成的第二智能合约。
字节码(英语:Bytecode)通常指的是已经经过编译,但与特是编码后的数值常量、引用、指令等构成的序列。字节码主要为了实现特定软件运行和软件环境、与硬件环境无关。使用编译器将源代码编译成字节码,输出字节码合约文件,组成合约部署交易。
该字节码合约文件用于,在执行阶段,对应的目标合约虚拟机实例能够将该字节码转译成可以直接执行的机器码指令。
因此,合约部署交易可以包括交易发起者账户地址、字节码合约文件和接口描述文件等信息。接口描述文件描述一种应用程序二进制接口,具体可以是是字节码合约文件的源代码编译之后的接口文件,方便软件工具包进行合约部署交易的构成、合约调用交易的构成以及执行调用后的执行结果的解析。
在本发明实施例中,在将第二智能合约部署到区块链上之前,可以将第二智能合约在区块链中进行共识,待共识通过后,生成第二智能合约的合约地址并根据该合约地址上传到区块链。
图3为本发明实施例提供的基于区块链平台的智能合约执行方法的流程图,本方法的执行主体为区块链节点。其中,在区块链平台中部署WASM虚拟机,在WASM虚拟机中部署分别支持不同合约语言的多种合约虚拟机实例,并在区块链中部署WASM虚拟机支持的第一智能合约、及多种合约虚拟机实例分别支持的多种实例智能合约。
本方法包括如下步骤:
步骤310:在区块链中对多种实例智能合约中的第二智能合约及第一智能合约发起调用;
步骤320:在WASM虚拟机中执行第一智能合约,通过执行第一智能合约在多种合约虚拟机实例中调用支持第二智能合约的目标合约虚拟机实例,利用目标合约虚拟机实例执行第二智能合约,输出执行结果;
步骤330:将执行结果上传到区块链。
在本发明实施例中,智能合约执行过程应用于具体业务交易,最终的执行结果是基于第二智能合约的业务交易结果。
在本发明实施例中,WASM虚拟机提供其他合约虚拟机的运行环境,根据第二智能合约的合约类型调用具体的目标合约虚拟机实例,由WASM虚拟机运行时实现的目标合约虚拟机实例解释执行。
在这种情况下,能够在WASM虚拟机中并行实现多个合约虚拟机实例运行时。
在本发明实施例中,根据第二智能合约的合约地址调用第二智能合约,该第二智能合约直接作为WASM虚拟机实例的输入,由WASM虚拟机调用模板合约虚拟机实例执行第二智能合约。
在本发明实施例中,参照图4,基于区块链平台的智能合约执行方法包括如下步骤:
步骤410:在区块链中对多种实例智能合约中的第二智能合约及所述第一智能合约发起调用;
步骤420:利用交易实例对调用的第二智能合约进行实例化,获得合约交易;
步骤430:利用所述合约交易对调用的第一智能合约进行实例化,获得虚拟机实例调用交易;
步骤440:在WASM虚拟机中执行虚拟机实例调用交易,调用支持第二智能合约的目标合约虚拟机实例,利用目标合约虚拟机实例执行合约交易,输出执行结果;
步骤450:将执行结果上传区块链。
在本发明实施例中,交易实例包含提交到区块链平台的区块链交易参数,具体包括交易发起方信息、交易目的方信息、交易对象、交易标的等,利用这些参数对具体的第二智能合约进行实例化。
在这种情况下,目标合约虚拟机实例通过执行该合约交易,具体为基于相应的交易实例执行智能合约设定的交易条件,输出交易执行结果。
在本发明实施例中,利用合约交易对第一智能合约进行实例化,可以是指利用第二智能合约的合约类型对第一智能合约进行实例化。在这种情况下,WASM虚拟机通过执行该虚拟机实例调用交易,解析出第二智能合约的合约类型,从而利用该合约类型调用支持该合约类型的目标合约虚拟机实例,并运行该目标合约虚拟机实例。
在本发明实施例中,第二智能合约是以字节码文件的形式部署在区块链上。因此,利用交易实例对调用的所述第二智能合约进行实例化,获得合约交易,包括:
在调用的所述第二智能合约为字节码文件的情况下,利用交易实例对所述字节码文件进行实例化,获得基于字节码实现的合约交易;
在这种情况下,利用目标合约虚拟机实例执行合约交易,具体包括:
利用所述目标合约虚拟机实例将所述字节码转译为机器码,并执行所述机器码。
目标合约虚拟机实例具有解释器功能,对字节码进行解释转译成机器码,机器码为一系列可执行指令,从而能够为目标合约虚拟机实例执行。
在本发明实施例中,第一智能合约也是以字节码形式部署在区块链上。因此,利用所述合约交易对调用的所述第一智能合约进行实例化,获得虚拟机实例调用交易,具体包括:
在调用的第一智能合约为字节码文件的情况下,利用所述合约交易对所述字节码文件进行实例化,获得基于字节码的虚拟机实例调用交易;
在所述WASM虚拟机中执行所述虚拟机实例调用交易,调用支持所述第二智能合约的目标合约虚拟机实例,包括:
利用WASM虚拟机将所述字节码转译为机器码,并执行所述机器码,通过执行所述机器码调用支持所述第二智能合约的目标合约虚拟机实例。
WASM虚拟机能够对第一智能合约的字节码进行解释转译成机器码,并执行该机器码,输出交易执行结果。
在本发明实施例中,参考图5,智能合约执行方法包括如下步骤:
步骤510:接收交易发起方基于所述第二智能合约的交易请求;
步骤520:响应于交易请求,在所述区块链中对所述多种实例智能合约中的第二智能合约发起调用,还调用所述第一智能合约;
步骤530:在WASM虚拟机中执行第一智能合约,通过执行第一智能合约在多种合约虚拟机实例中调用支持第二智能合约的目标合约虚拟机实例,利用目标合约虚拟机实例执行第二智能合约,输出执行结果;
步骤540:将执行结果上传到区块链。
本发明实施例的智能合约执行方法应用于具体的交易场景。
在本发明实施例中,执行结果在上链之前,发送给共识节点,由共识节点进行共识,并在共识通过后上链,也就是存储到各区块链节点。
图6为本发明实施例提供的基于区块链平台的智能合约部署装置的结构图,本装置可以包括:
获取模块610,获取基于目标合约语言的合约部署交易,目标合约语言对应于多种虚拟机实例中的目标合约虚拟机实例;
第一调用模块620,根据合约部署交易在区块链中调用第一智能合约;
第一执行模块630,在WASM虚拟机中执行第一智能合约,通过执行第一智能合约解析合约部署交易,得到基于目标合约语言的第二智能合约;
部署模块640,将第二智能合约部署到区块链上。
可选地,第一执行模块630具体用于:
通过执行所述第一智能合约解析所述合约部署交易,得到基于所述目标合约语言的字节码合约文件、以及利用所述字节码文件形成的所述第二智能合约。
利用本发明实施例的方案,通过在WASM虚拟机中实现多种具体的合约虚拟机实例,从而可以在WASM虚拟机的智能合约之上实现对多种合约语言实现的智能合约的部署和调用,而无需对区块链底层架构进行适配重构,本发明实施例在实现跨区块链智能合约融合复用方面具有较高可行性。
上述模块的实现原理参见基于区块链平台的智能合约部署方法中的相关介绍,此处不再赘述。
图7为本发明实施例提供的基于区块链平台的智能合约执行装置的结构图,本装置可以包括:
第二调用模块710,在所述区块链中对所述多种实例智能合约中的第二智能合约及所述第一智能合约发起调用;
第二执行模块720,在WASM虚拟机中执行第一智能合约,通过执行第一智能合约在多种合约虚拟机实例中调用支持第二智能合约的目标合约虚拟机实例,利用目标合约虚拟机实例执行第二智能合约,输出执行结果;
上传模块730,将执行结果上传到区块链。
可选地,参考图8,与图7相比,图8所示智能合约部署装置还包括:
第一实例化模块810,利用交易实例对调用的所述第二智能合约进行实例化,获得合约交易;
第二实例化模块820,利用所述合约交易对调用的所述第一智能合约进行实例化,获得虚拟机实例调用交易;
第二执行模块830具体用于:
在所述WASM虚拟机中执行所述虚拟机实例调用交易,调用支持所述第二智能合约的目标合约虚拟机实例,利用所述目标合约虚拟机实例执行所述合约交易。
可选地,第一实例化模块810具体用于:
在调用的所述第二智能合约为字节码文件的情况下,利用交易实例对所述字节码文件进行实例化,获得基于字节码实现的合约交易;
第二执行模块830具体用于:
利用所述目标合约虚拟机实例将所述字节码转译为机器码,并执行所述机器码。
可选地,第二实例化模块820具体用于:
在调用的所述第一智能合约为字节码文件的情况下,利用所述合约交易对所述字节码文件进行实例化,获得基于字节码的虚拟机实例调用交易;
第二执行模块830具体用于:
利用所述WASM虚拟机将所述字节码转译为机器码,并执行所述机器码,通过执行所述机器码调用支持所述第二智能合约的目标合约虚拟机实例。
可选地,与图7相比,图9所示智能合约执行装置还包括:
接收模块910,在所述区块链中对所述多种实例智能合约中的第二智能合约和第一智能合约发起调用之前,接收交易发起方基于所述第二智能合约的交易请求;
第二调用模块920具体用于:
响应于所述交易请求,在所述区块链中对所述多种实例智能合约中的第二智能合约发起调用,还调用所述第一智能合约。
上述模的实现原理参见基于区块链平台的智能合约执行方法中的相关介绍,此处不再赘述。
利用本发明实施例的方案,通过在WASM虚拟机中实现多种具体的合约虚拟机实例,从而可以在WASM虚拟机的智能合约之上实现对多种合约语言实现的智能合约的部署和调用,而无需对区块链底层架构进行适配重构,本发明实施例在实现跨区块链智能合约融合复用方面具有较高可行性。
本发明实施例还提供一种电子设备,包括处理器。存储器,其中存储有处理器的可执行指令。其中,处理器配置为经由执行可执行指令来执行的基于区块链平台的智能合约部署方法的步骤或基于区块链平台的智能合约执行方法的步骤。
如上所示,利用本发明实施例的方案,通过在WASM虚拟机中实现多种具体的合约虚拟机实例,从而可以在WASM虚拟机的智能合约之上实现对多种合约语言实现的智能合约的部署和调用,而无需对区块链底层架构进行适配重构,本发明实施例在实现跨区块链智能合约融合复用方面具有较高可行性。
所属技术领域的技术人员能够理解,本发明的各个方面可以实现为系统、方法或程序产品。因此,本发明的各个方面可以具体实现为以下形式,即:完全的硬件实施方式、完全的软件实施方式(包括固件、微代码等),或硬件和软件方面结合的实施方式,这里可以统称为“电路”、“模块”或“平台”。
图10是本发明的电子设备的结构示意图。下面参照图10来描述根据本发明的这种实施方式的电子设备1000。图10显示的电子设备1000仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
如图10所示,电子设备1000以通用计算设备的形式表现。电子设备1000的组件可以包括但不限于:至少一个处理单元1010、至少一个存储单元1020、连接不同平台组件(包括存储单元1020和处理单元1010)的总线1030、显示单元1040等。
其中,存储单元存储有程序代码,程序代码可以被处理单元1010执行,使得处理单元1010执行本说明书上述电子处方流转处理方法部分中描述的根据本发明各种示例性实施方式的步骤。例如,处理单元1010可以执行如图2中所示的步骤。
存储单元1020可以包括易失性存储单元形式的可读介质,例如随机存取存储单元(RAM)1021和/或高速缓存存储单元1022,还可以进一步包括只读存储单元(ROM)1023。
存储单元1020还可以包括具有一组(至少一个)程序模块1025的程序/实用工具1024,这样的程序模块1025包括但不限于:处理系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。
总线1030可以为表示几类总线结构中的一种或多种,包括存储单元总线或者存储单元控制器、外围总线、图形加速端口、处理单元或者使用多种总线结构中的任意总线结构的局域总线。
电子设备1000也可以与一个或多个外部设备1100(例如键盘、指向设备、蓝牙设备等)通信,还可与一个或者多个使得用户能与该电子设备1000交互的设备通信,和/或与使得该电子设备1000能与一个或多个其它计算设备进行通信的任何设备(例如路由器、调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口1050进行。并且,电子设备1000还可以通过网络适配器1060与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。网络适配器10100可以通过总线1030与电子设备1000的其它模块通信。应当明白,尽管图中未示出,可以结合电子设备1000使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储平台等。
本发明实施例还提供一种计算机可读存储介质,用于存储程序,程序被执行时实现的基于区块链平台的智能合约部署方法的步骤或基于区块链平台的智能合约执行方法的步骤。在一些可能的实施方式中,本发明的各个方面还可以实现为一种程序产品的形式,其包括程序代码,当程序产品在终端设备上运行时,程序代码用于使终端设备执行本说明书上述电子处方流转处理方法部分中描述的根据本发明各种示例性实施方式的步骤。
如上所示,本发明如上实施例通过在WASM虚拟机中实现多种具体的合约虚拟机实例,从而可以在WASM虚拟机的智能合约之上实现对多种合约语言实现的智能合约的部署和调用,而无需对区块链底层架构进行适配重构,本发明实施例在实现跨区块链智能合约融合复用方面具有较高可行性。
根据本发明的实施方式的用于实现上述方法的程序产品1000,其可以采用便携式紧凑盘只读存储器(CD-ROM)并包括程序代码,并可以在终端设备,例如个人电脑上运行。然而,本发明的程序产品不限于此,在本文件中,可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
程序产品可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以为但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。
计算机可读存储介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。可读存储介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。可读存储介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、有线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言的任意组合来编写用于执行本发明处理的程序代码,程序设计语言包括面向对象的程序设计语言—诸如Java、C++等,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络,包括局域网(LAN)或广域网(WAN),连接到用户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。
综上,本发明的目的在于提供基于区块链平台的智能合约部署和执行方法、设备及存储介质,能够通过在WASM虚拟机中实现多种具体的合约虚拟机实例,从而可以在WASM虚拟机的智能合约之上实现对多种合约语言实现的智能合约的部署和调用,而无需对区块链底层架构进行适配重构,本发明实施例在实现跨区块链智能合约融合复用方面具有较高可行性。
以上内容是结合具体的优选实施方式对本发明所作的进一步详细说明,不能认定本发明的具体实施只局限于这些说明。对于本发明所属技术领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干简单推演或替换,都应当视为属于本发明的保护范围。

Claims (11)

1.一种基于区块链平台的智能合约部署方法,其特征在于,在所述区块链平台中部署WASM虚拟机,在所述WASM虚拟机中部署分别支持不同区块链平台的合约语言的多种合约虚拟机实例,并在区块链中部署所述WASM虚拟机所支持的第一智能合约,所述方法包括:
获取基于目标合约语言的合约部署交易,所述目标合约语言对应于所述多种虚拟机实例中的目标合约虚拟机实例;
根据所述合约部署交易在所述区块链中调用所述第一智能合约;
在所述WASM虚拟机中执行所述第一智能合约,通过执行所述第一智能合约解析所述合约部署交易,得到基于所述目标合约语言的第二智能合约;
将所述第二智能合约部署到所述区块链上。
2.根据权利要求1所述的基于区块链平台的智能合约部署方法,其特征在于,所述通过执行所述第一智能合约解析所述合约部署交易,得到基于所述目标合约语言的第二智能合约,包括:
通过执行所述第一智能合约解析所述合约部署交易,得到基于所述目标合约语言的字节码合约文件、以及利用所述字节码文件形成的所述第二智能合约。
3.一种基于区块链平台的智能合约执行方法,其特征在于,在所述区块链平台中部署WASM虚拟机,在所述WASM虚拟机中部署分别支持不同合约语言的多种合约虚拟机实例,并在区块链中部署所述WASM虚拟机所支持的第一智能合约、及所述多种合约虚拟机实例分别支持的多种实例智能合约,所述方法包括:
在所述区块链中对所述多种实例智能合约中的第二智能合约及所述第一智能合约发起调用;
在所述WASM虚拟机中执行所述第一智能合约,通过执行所述第一智能合约在所述多种合约虚拟机实例中调用支持所述第二智能合约的目标合约虚拟机实例,利用所述目标合约虚拟机实例执行所述第二智能合约,输出执行结果;
将所述执行结果上传到区块链。
4.根据权利要求3所述的基于区块链平台的智能合约执行方法,其特征在于,在所述WASM虚拟机中执行所述第一智能合约之前,所述方法还包括:
利用交易实例对调用的所述第二智能合约进行实例化,获得合约交易;
利用所述合约交易对调用的所述第一智能合约进行实例化,获得虚拟机实例调用交易;
在所述WASM虚拟机中执行所述第一智能合约,通过执行所述第一智能合约在所述多种合约虚拟机实例中调用支持所述第二智能合约的目标合约虚拟机实例,利用所述目标合约虚拟机实例执行所述第二智能合约,包括:
在所述WASM虚拟机中执行所述虚拟机实例调用交易,调用支持所述第二智能合约的目标合约虚拟机实例,利用所述目标合约虚拟机实例执行所述合约交易。
5.根据权利要求4所述的基于区块链平台的智能合约执行方法,其特征在于,利用交易实例对调用的所述第二智能合约进行实例化,获得合约交易,包括:
在调用的所述第二智能合约为字节码文件的情况下,利用交易实例对所述字节码文件进行实例化,获得基于字节码实现的合约交易;
利用所述目标合约虚拟机实例执行所述合约交易,包括:
利用所述目标合约虚拟机实例将所述字节码转译为机器码,并执行所述机器码。
6.根据权利要求4所述的基于区块链平台的智能合约执行方法,其特征在于,利用所述合约交易对调用的所述第一智能合约进行实例化,获得虚拟机实例调用交易,包括:
在调用的所述第一智能合约为字节码文件的情况下,利用所述合约交易对所述字节码文件进行实例化,获得基于字节码的虚拟机实例调用交易;
在所述WASM虚拟机中执行所述虚拟机实例调用交易,调用支持所述第二智能合约的目标合约虚拟机实例,包括:
利用所述WASM虚拟机将所述字节码转译为机器码,并执行所述机器码,通过执行所述机器码调用支持所述第二智能合约的目标合约虚拟机实例。
7.根据权利要求3所述的基于区块链平台的智能合约执行方法,其特征在于,所述方法还包括:
在所述区块链中对所述多种实例智能合约中的第二智能合约和第一智能合约发起调用之前,接收交易发起方基于所述第二智能合约的交易请求;
所述在区块链中对所述多种实例智能合约中的第二智能合约发起调用,包括:
响应于所述交易请求,在所述区块链中对所述多种实例智能合约中的第二智能合约发起调用,还调用所述第一智能合约。
8.一种基于区块链平台的智能合约部署装置,其特征在于,在所述区块链平台中部署WASM虚拟机,在所述WASM虚拟机中部署分别支持不同合约语言的多种合约虚拟机实例,并在区块链中部署所述WASM虚拟机所支持的第一智能合约,所述装置包括:
第一获取模块,获取基于目标合约语言的合约部署交易,所述目标合约语言对应于所述多种虚拟机实例中的目标合约虚拟机实例;
第一调用模块,根据所述合约部署交易在所述区块链中调用所述第一智能合约;
第一执行模块,在所述WASM虚拟机中执行所述第一智能合约,通过执行所述第一智能合约解析所述合约部署交易,得到基于所述目标合约语言的第二智能合约;
部署模块,将所述第二智能合约部署到所述区块链上。
9.一种基于区块链平台的智能合约执行装置,其特征在于,在所述区块链平台中部署WASM虚拟机,在所述WASM虚拟机中部署分别支持不同合约语言的多种合约虚拟机实例,并在区块链中部署所述WASM虚拟机所支持的第一智能合约、及所述多种合约虚拟机实例所分别支持的多种实例智能合约,所述装置包括:
第二调用模块,在所述区块链中对所述多种实例智能合约中的第二智能合约及所述第一智能合约发起调用;
第二执行模块,在所述WASM虚拟机中执行所述第一智能合约,通过执行所述第一智能合约在所述多种合约虚拟机实例中调用支持所述第二智能合约的目标合约虚拟机实例,利用所述目标合约虚拟机实例执行所述第二智能合约,输出执行结果;
上传模块,将所述执行结果上传到区块链。
10.一种电子设备,其特征在于,包括:
处理器;
存储器,其中存储有所述处理器的可执行指令;
其中,所述处理器配置为经由执行所述可执行指令来执行权利要求1至2任意一项所述基于区块链平台的智能合约部署方法的步骤、或权利要求3-7任意一项所述基于区块链平台的智能合约执行方法的步骤。
11.一种计算机可读存储介质,用于存储程序,其特征在于,所述程序被处理器执行时实现1至2任意一项所述基于区块链平台的智能合约部署方法的步骤、或权利要求3-7任意一项所述基于区块链平台的智能合约执行方法的步骤。
CN202111457391.6A 2021-12-01 2021-12-01 智能合约部署和执行方法、设备及存储介质 Pending CN114116134A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202111457391.6A CN114116134A (zh) 2021-12-01 2021-12-01 智能合约部署和执行方法、设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111457391.6A CN114116134A (zh) 2021-12-01 2021-12-01 智能合约部署和执行方法、设备及存储介质

Publications (1)

Publication Number Publication Date
CN114116134A true CN114116134A (zh) 2022-03-01

Family

ID=80369877

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111457391.6A Pending CN114116134A (zh) 2021-12-01 2021-12-01 智能合约部署和执行方法、设备及存储介质

Country Status (1)

Country Link
CN (1) CN114116134A (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115022312A (zh) * 2022-03-30 2022-09-06 中国信息通信研究院 多智能合约引擎的实现方法、装置、电子设备及存储介质
CN117130721A (zh) * 2023-08-04 2023-11-28 北京中电华大电子设计有限责任公司 WebAssembly代码的执行方法及装置
CN117593129A (zh) * 2024-01-19 2024-02-23 腾讯科技(深圳)有限公司 交易的执行方法、装置、计算机可读介质及电子设备
WO2024066749A1 (zh) * 2022-09-26 2024-04-04 腾讯科技(深圳)有限公司 区块链的交易执行方法、装置、程序产品、设备和介质

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115022312A (zh) * 2022-03-30 2022-09-06 中国信息通信研究院 多智能合约引擎的实现方法、装置、电子设备及存储介质
WO2024066749A1 (zh) * 2022-09-26 2024-04-04 腾讯科技(深圳)有限公司 区块链的交易执行方法、装置、程序产品、设备和介质
CN117130721A (zh) * 2023-08-04 2023-11-28 北京中电华大电子设计有限责任公司 WebAssembly代码的执行方法及装置
CN117130721B (zh) * 2023-08-04 2024-03-29 北京中电华大电子设计有限责任公司 WebAssembly代码的执行方法及装置
CN117593129A (zh) * 2024-01-19 2024-02-23 腾讯科技(深圳)有限公司 交易的执行方法、装置、计算机可读介质及电子设备
CN117593129B (zh) * 2024-01-19 2024-05-03 腾讯科技(深圳)有限公司 交易的执行方法、装置、计算机可读介质及电子设备

Similar Documents

Publication Publication Date Title
US9811360B2 (en) Dynamic determination of application server runtime classloading
CN114116134A (zh) 智能合约部署和执行方法、设备及存储介质
KR102059705B1 (ko) 적응식 이식가능 라이브러리
CN101470621B (zh) 虚拟机配置系统
EP0905617B1 (en) Method for generating a java bytecode data flow graph
EP1347379A2 (en) On demand, network accessible runtime compile server
CN107577477B (zh) 一种基于dtb文件的多平台软件版本自适应方法及系统
CN112232000B (zh) 跨多个验证域的验证系统、验证方法、验证设备
CN114816417B (zh) 一种交叉编译方法、装置、计算设备及存储介质
WO2013034606A1 (en) Methods and systems for producing, evaluating and simulating executable applications
KR102156371B1 (ko) 네이티브 빌드 기반의 임베디드 소프트웨어 개발 환경을 지원하기 위한 임베디드 소프트웨어 개발 도구 제공 방법 및 장치
CN109766099A (zh) 前端源码编译方法、装置、存储介质及计算机设备
CN115629971A (zh) 一种应用的开发系统和开发方法
US8397217B2 (en) Integrating templates into tests
US7100039B2 (en) Systems and methods for a bootstrap mechanism for software execution
Rourke Learn WebAssembly: Build web applications with native performance using Wasm and C/C++
WO2019226251A1 (en) Code base sharing between standalone and web-based versions of an application via an emulated network communication channel
US8276132B1 (en) System and method for representing and managing a multi-architecture co-processor application program
CN114490103A (zh) 一种操作系统接口调用方法、装置以及电子设备
CN112379885B (zh) 小程序编译方法、装置、设备及可读存储介质
CN117093227B (zh) 一种用于执行智能合约的方法及装置
KR101213651B1 (ko) 운영체제의 초기화 스크립트의 이진화 방법, 및 그 이진화 스크립트의 실행 방법
US11086605B1 (en) Processing portable extensions at build time
CN116955875A (zh) 页面更新方法、装置、电子设备及存储介质
CN118092962A (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
CB02 Change of applicant information

Address after: 201404 1st floor, 1990 Jinbi Road, Fengxian District, Shanghai

Applicant after: Shanghai fengha Network Technology Co.,Ltd.

Address before: 201404 1st floor, 1990 Jinbi Road, Fengxian District, Shanghai

Applicant before: Shanghai Yanxiao Industrial Development Co.,Ltd.

CB02 Change of applicant information
TA01 Transfer of patent application right

Effective date of registration: 20220726

Address after: 200085 room 235, zone K, floor 2, No. 158, Shuanglian Road, Qingpu District, Shanghai

Applicant after: Shanghai Jiansu Network Technology Co.,Ltd.

Address before: 201404 1st floor, 1990 Jinbi Road, Fengxian District, Shanghai

Applicant before: Shanghai fengha Network Technology Co.,Ltd.

TA01 Transfer of patent application right