CN112527466A - 基于EVM与Wasm虚拟机的多语言智能合约兼容方法及系统 - Google Patents

基于EVM与Wasm虚拟机的多语言智能合约兼容方法及系统 Download PDF

Info

Publication number
CN112527466A
CN112527466A CN202011533338.5A CN202011533338A CN112527466A CN 112527466 A CN112527466 A CN 112527466A CN 202011533338 A CN202011533338 A CN 202011533338A CN 112527466 A CN112527466 A CN 112527466A
Authority
CN
China
Prior art keywords
contract
virtual machine
evm
target
wasm
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
CN202011533338.5A
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 Wanxiang Blockchain Inc
Original Assignee
Shanghai Wanxiang Blockchain Inc
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 Wanxiang Blockchain Inc filed Critical Shanghai Wanxiang Blockchain Inc
Priority to CN202011533338.5A priority Critical patent/CN112527466A/zh
Publication of CN112527466A publication Critical patent/CN112527466A/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/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
    • G06F9/45516Runtime code conversion or optimisation

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

本发明提供了一种基于EVM与Wasm虚拟机的多语言智能合约兼容方法及系统,包括:底层协议通过预设配置开启协议所支持的虚拟机类型,当虚拟机类型为兼容模式时,则在合约层根据预设规范编写多虚拟机语言合约互调用的代码;在虚拟机支持的相应合约中,通过call方法对除虚拟机支持的相应合约外的目标合约发起调用;在底层链中解析调用参数,得到被调用的目标合约地址和目标合约信息;根据目标合约地址获得目标合约的字节码,根据目标合约字节码判断目标合约的类型;根据目标合约的类型,底层链切换虚拟机类型,执行相应合约,得到执行完后的返回值;对执行完后的返回值进行编码转换,得到发起方合约能够识别的编码类型。

Description

基于EVM与Wasm虚拟机的多语言智能合约兼容方法及系统
技术领域
本发明涉及区块链技术领域,具体地,涉及基于EVM与Wasm虚拟机的多语言智能合约兼容方法及系统,更为具体地,涉及一种基于EVM与Wasm虚拟机的多语言智能合约兼容方案。
背景技术
结合区块链技术的行业应用往往以DAPP的形式呈现,而DAPP需要建立在区块链之上。以联盟链的场景为例,合约开发者需要在此联盟链之上建立DAPP应用,现有的绝大部分区块链底层协议只支持EVM或者只支持Wasm的智能合约,合约开发者往往需要学习此联盟链支持的智能合约语言,才能进行后续的DAPP开发,这需要花费一定的语言学习成本,同时也需要了解此联盟链的合约生态工具,而这往往对大部分开发者照成了一定的阻碍,同时也不利于联盟链的灵活使用场景。当此联盟链同时兼容EVM和Wasm虚拟机之后,则此问题迎刃而解,合约开发者无需花费额外的学习成本,从而极大提高合约编码的友好度,同时融合solidity与Wasm合约开发者生态。
本发明解决了EVM与Wasm合约开发者生态分裂的问题。EVM合约开发者熟悉Solidity语言智能合约,以及Solidity开发组件,而Wasm合约开发者则熟悉C++、Rust等语言的智能合约,以及对应Wasm合约开发组件。由于现有的区块链协议往往只支持EVM或者只支持Wasm,所以很难同时吸引两方开发者在其协议之上进行开发,为其协议完善应用生态。
本发明打通了Solidity与C++、Rust等Wasm虚拟机智能合约互调用的壁垒,实现不同虚拟机所支持的合约语言可以同时运行在一个区块链底层协议之上,并且以开发者极为友好的方式实现多语言合约相互兼容和调用。克服的难点包括:Solidity代表的EVM智能合约与C++、Rust等Wasm智能合约执行需要不同虚拟机解释器进行运行,难点在于如何自动化完成不同虚拟机之间的切换。如何在实现不同虚拟机多语言合约互调用的功能上,尽可能的降低合约开发者的学习以及迁移成本。本方案对于合约开发者来说,没有额外的学习和适应成本,也并未改变Solidity与C++等合约原生接口,合约开发者可以无缝迁移。
专利文献CN111736954A(申请号:202010589506.6)公开了一种多智能合约虚拟机实现方法、多智能合约虚拟机及系统。该多智能合约虚拟机实现方法包括:获取智能合约及与智能合约相关的参数;根据智能合约及与智能合约相关的参数确定智能合约对接的虚拟机控制器;将智能合约输入至与智能合约对接的虚拟机控制器,并监控智能合约的执行状态;编译智能合约,输出与智能合约相应的中间字节码文件;根据中间字节码文件按照预设指令标准生成机器码。
发明内容
针对现有技术中的缺陷,本发明的目的是提供一种基于EVM与Wasm虚拟机的多语言智能合约兼容方法及系统。
根据本发明提供的一种基于EVM与Wasm虚拟机的多语言智能合约兼容方法,包括:
步骤M1:底层协议通过预设配置开启协议所支持的虚拟机类型,当虚拟机类型为兼容模式时,则在合约层根据预设规范编写多虚拟机语言合约互调用的代码;
步骤M2:在虚拟机支持的相应合约中,对除虚拟机支持的相应合约外的目标合约发起调用;
步骤M3:在底层链中解析调用参数,得到被调用的目标合约地址和目标合约信息;
步骤M4:根据目标合约地址获得目标合约的字节码,根据目标合约字节码判断目标合约的类型;
步骤M5:根据目标合约的类型,底层链切换虚拟机类型,执行相应合约,得到执行完后的返回值;
步骤M6:对执行完后的返回值进行编码转换,得到发起方合约能够识别的编码类型;
所述兼容模式包括同时支持EVM和Wasm虚拟机,并能够实现EVM和Wasm虚拟机所支持的多种不同语言的智能合约互相调用。
优选地,所述步骤M1中通过预设配置开启协议所支持的虚拟机类型包括EVM、Wasm和/或兼容模式。
优选地,所述步骤M2包括在虚拟机支持的相应合约中,通过Call方法,对除当前虚拟机支持的相应合约外的目标合约发起调用。
优选地,所述步骤M3包括:在虚拟机解释器执行智能合约字节码时,当执行到合约互调用的操作码时,将调用参数解析为目标合约所对应的虚拟机解释器能识别的编码方式,得到被调用的目标合约地址和目标合约信息。
优选地,所述步骤M6包括:在EVM和Wasm虚拟机解释器执行完不同智能合约互调用操作后,针对执行完得到的返回值通过Json的通用编码方式进行编码转换,得到发起方合约能够识别的编码类型。
根据本发明提供的一种基于EVM与Wasm虚拟机的多语言智能合约兼容系统,包括:
模块M1:底层协议通过预设配置开启协议所支持的虚拟机类型,当虚拟机类型为兼容模式时,则在合约层根据预设规范编写多虚拟机语言合约互调用的代码;
模块M2:在虚拟机支持的相应合约中,对除虚拟机支持的相应合约外的目标合约发起调用;
模块M3:在底层链中解析调用参数,得到被调用的目标合约地址和目标合约信息;
模块M4:根据目标合约地址获得目标合约的字节码,根据目标合约字节码判断目标合约的类型;
模块M5:根据目标合约的类型,底层链切换虚拟机类型,执行相应合约,得到执行完后的返回值;
模块M6:对执行完后的返回值进行编码转换,得到发起方合约能够识别的编码类型;
所述兼容模式包括同时支持EVM和Wasm虚拟机,并能够实现EVM和Wasm虚拟机所支持的多种不同语言的智能合约互相调用。
优选地,所述模块M1中通过预设配置开启协议所支持的虚拟机类型包括EVM、Wasm和/或兼容模式。
优选地,所述模块M2包括在虚拟机支持的相应合约中,通过Call方法,对除当前虚拟机支持的相应合约外的目标合约发起调用。
优选地,所述模块M3包括:在虚拟机解释器执行智能合约字节码时,当执行到合约互调用的操作码时,将调用参数解析为目标合约所对应的虚拟机解释器能识别的编码方式,得到被调用的目标合约地址和目标合约信息。
优选地,所述模块M6包括:在EVM和Wasm虚拟机解释器执行完不同智能合约互调用操作后,针对执行完得到的返回值通过Json的通用编码方式进行编码转换,得到发起方合约能够识别的编码类型。
与现有技术相比,本发明具有如下的有益效果:
1、本发明通过本设计方案,智能合约开发者无需付出额外的迁移以及学习成本,可以使用各自最为熟悉的合约语言进行合约应用开发,同时能够利用现有的Solidity合约与C++、Rust等Wasm智能合约进行相互调用;
2、本发明通过Wasm与EVM虚拟机多语言合约互相调用方式设计模块,智能合约开发者可以极为方便的调用其他虚拟机所支持的多语言智能合约;
3、本发明通过底层链虚拟机解释器切换模块,可以让区块链底层协议搭载多种虚拟机,从而能够让底层链支持多种不同智能合约语言的应用。
附图说明
通过阅读参照以下附图对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显:
图1为基于EVM与Wasm虚拟机的多语言智能合约兼容方法流程图。
具体实施方式
下面结合具体实施例对本发明进行详细说明。以下实施例将有助于本领域的技术人员进一步理解本发明,但不以任何形式限制本发明。应当指出的是,对本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变化和改进。这些都属于本发明的保护范围。
实施例1
根据本发明提供的一种基于EVM与Wasm虚拟机的多语言智能合约兼容方法,包括:
步骤M1:底层协议通过预设配置开启协议所支持的虚拟机类型,当虚拟机类型为兼容模式时,则在合约层根据预设规范编写多虚拟机语言合约互调用的代码;
步骤M2:在虚拟机支持的相应合约中,对除虚拟机支持的相应合约外的目标合约发起调用;
步骤M3:在底层链中解析调用参数,得到被调用的目标合约地址和目标合约信息;
步骤M4:根据目标合约地址获得目标合约的字节码,根据目标合约字节码判断目标合约的类型;
步骤M5:根据目标合约的类型,底层链切换虚拟机类型,执行相应合约,得到执行完后的返回值;
步骤M6:对执行完后的返回值进行编码转换,得到发起方合约能够识别的编码类型;
所述兼容模式包括同时支持EVM和Wasm虚拟机,并能够实现EVM和Wasm虚拟机所支持的多种不同语言的智能合约互相调用。
具体地,所述步骤M1中通过预设配置开启协议所支持的虚拟机类型包括EVM、Wasm和/或兼容模式。
具体地,所述步骤M2包括在虚拟机支持的相应合约中,通过Call方法,对除当前虚拟机支持的相应合约外的目标合约发起调用。
具体地,所述步骤M3包括:在虚拟机解释器执行智能合约字节码时,当执行到合约互调用的操作码时,将调用参数解析为目标合约所对应的虚拟机解释器能识别的编码方式,得到被调用的目标合约地址和目标合约信息。
具体地,所述步骤M6包括:在EVM和Wasm虚拟机解释器执行完不同智能合约互调用操作后,针对执行完得到的返回值通过Json的通用编码方式进行编码转换,得到发起方合约能够识别的编码类型。
根据本发明提供的一种基于EVM与Wasm虚拟机的多语言智能合约兼容系统,包括:
模块M1:底层协议通过预设配置开启协议所支持的虚拟机类型,当虚拟机类型为兼容模式时,则在合约层根据预设规范编写多虚拟机语言合约互调用的代码;
模块M2:在虚拟机支持的相应合约中,对除虚拟机支持的相应合约外的目标合约发起调用;
模块M3:在底层链中解析调用参数,得到被调用的目标合约地址和目标合约信息;
模块M4:根据目标合约地址获得目标合约的字节码,根据目标合约字节码判断目标合约的类型;
模块M5:根据目标合约的类型,底层链切换虚拟机类型,执行相应合约,得到执行完后的返回值;
模块M6:对执行完后的返回值进行编码转换,得到发起方合约能够识别的编码类型;
所述兼容模式包括同时支持EVM和Wasm虚拟机,并能够实现EVM和Wasm虚拟机所支持的多种不同语言的智能合约互相调用。
具体地,所述模块M1中通过预设配置开启协议所支持的虚拟机类型包括EVM、Wasm和/或兼容模式。
具体地,所述模块M2包括在虚拟机支持的相应合约中,通过Call方法,对除当前虚拟机支持的相应合约外的目标合约发起调用。
具体地,所述模块M3包括:在虚拟机解释器执行智能合约字节码时,当执行到合约互调用的操作码时,将调用参数解析为目标合约所对应的虚拟机解释器能识别的编码方式,得到被调用的目标合约地址和目标合约信息。
具体地,所述模块M6包括:在EVM和Wasm虚拟机解释器执行完不同智能合约互调用操作后,针对执行完得到的返回值通过Json的通用编码方式进行编码转换,得到发起方合约能够识别的编码类型。
实施例2
实施例2是实施例1的变化例
本发明在链底层进行多种虚拟机之间不同语言合约相互调用的兼容,按现存市面上的情况,EVM虚拟机只能让solidity合约调用其他solidity合约,Wasm虚拟机只能让C++和玉调用其他的Wasm支持的合约.也就是说,并不能让EVM支持的合约与Wasm支持的合约进行相互调用,本发明就是打通两者合约开发者生态。
如图1所示,开发者EVM虚拟机支持的Solidity合约中,通过Call方法,对其他目标合约发起了调用;底层链互调用参数解析模块:在底层链中,我们会解析此调用的参数,就能获知被调用的目标合约地址和一些合约信息;目标合约所属虚拟机类型识别模块:根据目标合约地址,就能在底层得到目标合约的字节码,根据字节码判断此目标合约的类型,如分别出是属于EVM合约还是Wasm合约;虚拟机解释器切换模块:根据上一步得到的合约类型,底层自动切换虚拟机类型,执行对应合约对合约的执行完后的返回值进行处理,处理成发起方合约能够接受编码的。
一种基于EVM与Wasm虚拟机的多语言智能合约兼容方案,包括:虚拟机兼容模式管理、Wasm与EVM虚拟机多语言合约互相调用方式设计、底层链合约参数解析模块、底层链虚拟机解释器切换模块、底层链合约返回值编码模块。
所述虚拟机兼容模式管理包括底层链初始化配置模块;
底层链初始化配置模块:让底层协议通过指定的配置开启协议所支持的虚拟机类型.因为有的应用场景只需要EVM虚拟机,有的只需要Wasm虚拟机.所以,当指定为兼容模式时,才会同时开启EVM和Wasm虚拟机,这时才能拥有本方案不同虚拟机互调用的能力;
所述Wasm与EVM虚拟机多语言合约互相调用方式设计包括EVM合约层互调用模块和Wasm合约层互调用模块;
EVM合约层互调用模块、Wasm合约层互调用模块:这两个模块,只是用来规范,在合约层,开发者如果想要编写多虚拟机语言合约互调用的代码时,按照这两个模块指定的规范编写即可。
所述底层链合约参数解析模块包括EVM合约与Wasm合约互调用参数解析模块;
所述底层链虚拟机解释器切换模块包括EVM与Wasm虚拟机解释器切换模块;
所述底层链合约返回值编码模块包括EVM合约互调用返回值编码模块和Wasm合约互调用返回值编码模块;
所述底层链初始化配置模块采取在底层链初始化的配置中,加入虚拟机选择配置项,用于在启动链时选择自定义的虚拟机,以此配置项指定的虚拟机执行智能合约。配置项选择范围可设置为EVM、Wasm、兼容模式。如指定兼容模式则代表可同时支持EVM和Wasm虚拟机,并且能让两者虚拟机所支持的多种不同语言的智能合约互相调用。
所述EVM合约层互调用模块和Wasm合约层互调用模块包含EVM与Wasm所支持的智能合约在相互调用不同语言合约时,规范化其相互调用方式。以EVM虚拟机支持的Solidity语言和Wasm虚拟机所支持的C++语言为例,当在Solidity合约中,需要调用Wasm语言智能合约时,调用方式如下:
function callWasmContractTest()public{
(bool.ok,bytes memory res)=address(0xDD57d4cb459C2fcb57E1E17fc7090FE9cC622eb1).call(bytes(‘{“func_name”:“getName”,“func_params”:[“int64(100)”]}’));
}
当在C++合约函数中,调用Solidity语言智能合约接口,以PlatONE中bcwasm的C++h合约为例,调用方式如下:
Figure BDA0002852552300000071
所述EVM合约与Wasm合约互调用参数解析模块在虚拟机解释器执行智能合约
字节码时,当执行到合约互调用的操作码时,会把输入参数转换解析为目标合约所对应的虚拟机解释器能识别的编码方式,从而打通不同虚拟机多语言智能合约互调用壁垒。
所述EVM与Wasm虚拟机解释器切换模块包含识别合约所属虚拟机类型和解释器切换。当原合约调用其他目标合约时,会执行调用操作码,如Solidity中会执行call、delegate、staticCall等操作码,底层会开启对应的EVM虚拟机并创建虚拟机解释器用于执行目标合约字节码。在真正执行目标合约代码之前,会先判断此虚拟机解释器是否拥有执行目标合约的能力,本方案设计在此处根据目标合约地址,获取到目标合约字节码,因Solidity合约和C++等Wasm合约拥有不同的字节码组织方式,从而可以判断出目标合约所属类型。当知道目标合约所属类型之后,则可据此切换成目标合约类型对应的解释器用于执行此目标合约,从而实现EVM与Wasm虚拟机解释器自动切换。
所述EVM合约互调用返回值编码模块和Wasm合约互调用返回值编码模块用于在EVM和Wasm虚拟机解释器执行完不同语言智能合约互调用操作之后,针对执行完得到的返回值结果进行编码转换。如当Solidity合约使用call操作码调用C++合约时,会启动EVM虚拟机执行call操作码,此时根据目标合约字节码判断为Wasm合约,则底层虚拟机解释器切换为Wasm解释器,用于执行C++合约接口调用,在执行完调用,此时获取到的结果值为符号Wasm虚拟机所识别的编码方式,而此结果需要返回给到EVM虚拟机中,所以需要把编码转换为EVM解释器所识别的编码方式。对于Wasm合约调用EVM目标合约的返回值编码转换过程跟上述流程类似。
所述EVM合约互调用返回值编码模块和Wasm合约互调用返回值编码模块还可以进一步包含多语言智能合约互调用参数编码模块,本设计方案采用的是Json的通用编码方式,当增加参数编码模块后,可以采用其他的通用编码或者自定义编码方式来对互调用参数进行编码,简化互调用参数组装方式。
所述EVM与Wasm虚拟机解释器切换模块还可以进一步包含合约所属虚拟机类型识别模块。本设计方案着重解决EVM虚拟机与Wasm虚拟机智能合约互调用,但当增加合约所属虚拟机类型识别模块后,可以衍生支持更多的其他类型的虚拟机,拓宽此设计的使用场景。
本领域技术人员知道,除了以纯计算机可读程序代码方式实现本发明提供的系统、装置及其各个模块以外,完全可以通过将方法步骤进行逻辑编程来使得本发明提供的系统、装置及其各个模块以逻辑门、开关、专用集成电路、可编程逻辑控制器以及嵌入式微控制器等的形式来实现相同程序。所以,本发明提供的系统、装置及其各个模块可以被认为是一种硬件部件,而对其内包括的用于实现各种程序的模块也可以视为硬件部件内的结构;也可以将用于实现各种功能的模块视为既可以是实现方法的软件程序又可以是硬件部件内的结构。
以上对本发明的具体实施例进行了描述。需要理解的是,本发明并不局限于上述特定实施方式,本领域技术人员可以在权利要求的范围内做出各种变化或修改,这并不影响本发明的实质内容。在不冲突的情况下,本申请的实施例和实施例中的特征可以任意相互组合。

Claims (10)

1.一种基于EVM与Wasm虚拟机的多语言智能合约兼容方法,其特征在于,包括:
步骤M1:底层协议通过预设配置开启协议所支持的虚拟机类型,当虚拟机类型为兼容模式时,则在合约层根据预设规范编写多虚拟机语言合约互调用的代码;
步骤M2:在虚拟机支持的相应合约中,对除虚拟机支持的相应合约外的目标合约发起调用;
步骤M3:在底层链中解析调用参数,得到被调用的目标合约地址和目标合约信息;
步骤M4:根据目标合约地址获得目标合约的字节码,根据目标合约字节码判断目标合约的类型;
步骤M5:根据目标合约的类型,底层链切换虚拟机类型,执行相应合约,得到执行完后的返回值;
步骤M6:对执行完后的返回值进行编码转换,得到发起方合约能够识别的编码类型;
所述兼容模式包括同时支持EVM和Wasm虚拟机,并能够实现EVM和Wasm虚拟机所支持的多种不同语言的智能合约互相调用。
2.根据权利要求1所述的基于EVM与Wasm虚拟机的多语言智能合约兼容方法,其特征在于,所述步骤M1中通过预设配置开启协议所支持的虚拟机类型包括EVM、Wasm和/或兼容模式。
3.根据权利要求1所述的基于EVM与Wasm虚拟机的多语言智能合约兼容方法,其特征在于,所述步骤M2包括在虚拟机支持的相应合约中,通过Call方法,对除当前虚拟机支持的相应合约外的目标合约发起调用。
4.根据权利要求1所述的基于EVM与Wasm虚拟机的多语言智能合约兼容方法,其特征在于,所述步骤M3包括:在虚拟机解释器执行智能合约字节码时,当执行到合约互调用的操作码时,将调用参数解析为目标合约所对应的虚拟机解释器能识别的编码方式,得到被调用的目标合约地址和目标合约信息。
5.根据权利要求1所述的基于EVM与Wasm虚拟机的多语言智能合约兼容方法,其特征在于,所述步骤M6包括:在EVM和Wasm虚拟机解释器执行完不同智能合约互调用操作后,针对执行完得到的返回值通过Json的通用编码方式进行编码转换,得到发起方合约能够识别的编码类型。
6.一种基于EVM与Wasm虚拟机的多语言智能合约兼容系统,其特征在于,包括:
模块M1:底层协议通过预设配置开启协议所支持的虚拟机类型,当虚拟机类型为兼容模式时,则在合约层根据预设规范编写多虚拟机语言合约互调用的代码;
模块M2:在虚拟机支持的相应合约中,对除虚拟机支持的相应合约外的目标合约发起调用;
模块M3:在底层链中解析调用参数,得到被调用的目标合约地址和目标合约信息;
模块M4:根据目标合约地址获得目标合约的字节码,根据目标合约字节码判断目标合约的类型;
模块M5:根据目标合约的类型,底层链切换虚拟机类型,执行相应合约,得到执行完后的返回值;
模块M6:对执行完后的返回值进行编码转换,得到发起方合约能够识别的编码类型;
所述兼容模式包括同时支持EVM和Wasm虚拟机,并能够实现EVM和Wasm虚拟机所支持的多种不同语言的智能合约互相调用。
7.根据权利要求6所述的基于EVM与Wasm虚拟机的多语言智能合约兼容系统,其特征在于,所述模块M1中通过预设配置开启协议所支持的虚拟机类型包括EVM、Wasm和/或兼容模式。
8.根据权利要求6所述的基于EVM与Wasm虚拟机的多语言智能合约兼容系统,其特征在于,所述模块M2包括在虚拟机支持的相应合约中,通过Call方法,对除当前虚拟机支持的相应合约外的目标合约发起调用。
9.根据权利要求6所述的基于EVM与Wasm虚拟机的多语言智能合约兼容系统,其特征在于,所述模块M3包括:在虚拟机解释器执行智能合约字节码时,当执行到合约互调用的操作码时,将调用参数解析为目标合约所对应的虚拟机解释器能识别的编码方式,得到被调用的目标合约地址和目标合约信息。
10.根据权利要求6所述的基于EVM与Wasm虚拟机的多语言智能合约兼容系统,其特征在于,所述模块M6包括:在EVM和Wasm虚拟机解释器执行完不同智能合约互调用操作后,针对执行完得到的返回值通过Json的通用编码方式进行编码转换,得到发起方合约能够识别的编码类型。
CN202011533338.5A 2020-12-22 2020-12-22 基于EVM与Wasm虚拟机的多语言智能合约兼容方法及系统 Pending CN112527466A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011533338.5A CN112527466A (zh) 2020-12-22 2020-12-22 基于EVM与Wasm虚拟机的多语言智能合约兼容方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011533338.5A CN112527466A (zh) 2020-12-22 2020-12-22 基于EVM与Wasm虚拟机的多语言智能合约兼容方法及系统

Publications (1)

Publication Number Publication Date
CN112527466A true CN112527466A (zh) 2021-03-19

Family

ID=74975849

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011533338.5A Pending CN112527466A (zh) 2020-12-22 2020-12-22 基于EVM与Wasm虚拟机的多语言智能合约兼容方法及系统

Country Status (1)

Country Link
CN (1) CN112527466A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117593129A (zh) * 2024-01-19 2024-02-23 腾讯科技(深圳)有限公司 交易的执行方法、装置、计算机可读介质及电子设备

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20190102163A1 (en) * 2017-10-04 2019-04-04 Dispatch Labs, LLC System and Method for a Blockchain-Supported Programmable Information Management and Data Distribution System
CN110569110A (zh) * 2019-09-11 2019-12-13 杭州秘猿科技有限公司 支持可交互的多虚拟机的区块链方法、电子设备
CN110602125A (zh) * 2019-09-23 2019-12-20 腾讯科技(深圳)有限公司 数据处理方法、装置、终端及存储介质
CN111033468A (zh) * 2019-03-26 2020-04-17 阿里巴巴集团控股有限公司 实施不同类型的区块链合约的系统和方法
CN111176791A (zh) * 2019-12-31 2020-05-19 杭州趣链科技有限公司 一种基于多虚拟机区块链平台跨虚拟机调用方法

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20190102163A1 (en) * 2017-10-04 2019-04-04 Dispatch Labs, LLC System and Method for a Blockchain-Supported Programmable Information Management and Data Distribution System
CN111033468A (zh) * 2019-03-26 2020-04-17 阿里巴巴集团控股有限公司 实施不同类型的区块链合约的系统和方法
CN110569110A (zh) * 2019-09-11 2019-12-13 杭州秘猿科技有限公司 支持可交互的多虚拟机的区块链方法、电子设备
CN110602125A (zh) * 2019-09-23 2019-12-20 腾讯科技(深圳)有限公司 数据处理方法、装置、终端及存储介质
CN111176791A (zh) * 2019-12-31 2020-05-19 杭州趣链科技有限公司 一种基于多虚拟机区块链平台跨虚拟机调用方法

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117593129A (zh) * 2024-01-19 2024-02-23 腾讯科技(深圳)有限公司 交易的执行方法、装置、计算机可读介质及电子设备
CN117593129B (zh) * 2024-01-19 2024-05-03 腾讯科技(深圳)有限公司 交易的执行方法、装置、计算机可读介质及电子设备

Similar Documents

Publication Publication Date Title
CN109542399B (zh) 软件开发方法、装置、终端设备及计算机可读存储介质
US8448151B2 (en) Method for binarizing initial script on operating system and operating method of binary script
CN106020877A (zh) 系统环境配置自动更新方法及装置
US10248409B1 (en) Limiting the effects of source code patches on corresponding native-code patches
CN112363694B (zh) Fmu文件及求解器运行环境与工业软件的集成方法
CN112328229A (zh) 一种快速创建Jenkins流水线的方法
CN109597618B (zh) 程序开发方法、装置、计算机设备及存储介质
US11482218B2 (en) Voice control method, voice control device, and computer-executable non-volatile storage medium
CN103309800A (zh) 一种网页自动化测试方法和系统
CN112114789B (zh) 一种业务开发方法及设备
CN112527466A (zh) 基于EVM与Wasm虚拟机的多语言智能合约兼容方法及系统
CN105721451A (zh) 一种可拓展的Modbus协议解析方法及装置
CN104850403A (zh) 一种基于控件技术的示波器远程控制系统的实现方法
CN103246605A (zh) 一种基于xml的遥控器键值配置方法和系统
CN110018831B (zh) 程序处理方法、装置及计算机可读存储介质
CN111596970A (zh) 动态库延迟加载方法、装置、设备和存储介质
CN103279348B (zh) 在系统引导过程中显示信息的方法及系统
CN110569187B (zh) 一种多平台系统应用的自动化测试方法、装置及设备
CN115757084A (zh) 测试方法和测试装置及存储介质
CN114138242A (zh) 基于rpa软件的无代码跨系统接口开发方法
CN113254027A (zh) 一种半导体设备控制程序转换方法、系统、设备和存储介质
WO2013057607A1 (en) Computer program interface
CN114371986A (zh) 用户界面测试用例更新方法、装置及存储介质
CN110989995A (zh) 基于开源深度学习框架的人工智能应用的处理方法及系统
CN117056241B (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
RJ01 Rejection of invention patent application after publication

Application publication date: 20210319

RJ01 Rejection of invention patent application after publication