一种支持动态切换的双虚拟机系统及方法技术方案

技术编号:38714722 阅读:9 留言:0更新日期:2023-09-08 14:57
本发明专利技术公开一种支持动态切换的双虚拟机系统及方法。本发明专利技术在区块链系统中引入多虚拟机模式,并且支持虚拟机解释器根据智能合约的魔术特征动态的选择对应的虚拟机解释器,该方案能增强区块链系统的多样性,多种虚拟机类型则代表可以支持多种智能合约语言对应字节码的运行。强化了系统的完备性,为构造全方位区块链生态系统进一步提供了坚实基础。每集成一个新类型的虚拟机解释器,就对区块链系统的能力进行了一次强扩展,能进一步提高相关应用的实用性、高效性与多样性。高效性与多样性。高效性与多样性。

【技术实现步骤摘要】
一种支持动态切换的双虚拟机系统及方法


[0001]本专利技术涉及区块链
,尤其涉及一种支持动态切换的双虚拟机系统及方法。

技术介绍

[0002]目前为止,区块链技术对于多数人来说已经不是一个陌生的概念。伴随着区块链相关知识的普及以及其技术的发展,可以看到越来越多的应用场景中应用了区块链技术。新的技术改版了我们的思维模式和产品形态,同时思维模式的突破和新的产品需求也推送者技术的不断发展。区块链的应用模式主要特别包含:分布式数据存储、点对点传输、共识机制、加密算法等计算机技术。使用去中心化共识机制维护一个完整的、分布式的、不可篡改的账本数据库的技术,它能够让区块链中的参与者无需建立信任关系的前提下实现一个统一的账本系统。
[0003]智能合约是基于区块链上不篡改的数据,可以自动化的执行一些预定义好的规则和条款。将智能合约以数字化的形式写入区块链中,以信息的方式传播、验证和执行,允许在没有第三方的情况下进行可信交易,这些交易可追踪且不可逆转。智能合约的运行依赖于区块链虚拟机及其对应的解释器,虚拟机指的是软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统。JUICE区块链系统为用户提供了一套完整的智能合约运行环境,包括完整智能合约描述语言以及图灵完备的虚拟机。智能合约常用的代表语言为Solidity,利用该语言实现智能合约逻辑后,通过编译器编译成元数据(字节码),最后将字节码发布到链上。区块链虚拟机的本质上是一个基于栈的解释器,采用固定的机器位宽,使用一种新的模式将操作与消费关联。在运行过程中,多种存储状态(栈上存储、临时存储和永久存储)。
[0004]伴随着区块链虚拟机技术的不断发展,各种技术日益成熟,每一个阶段的技术都能催生出时下最热门的场景应用。随着可应用的场景越来越丰富,对虚拟机技术的要求也越来越高,多语言的支持也能让更多只能合约部署到区块链中,然后通过虚拟机运行。但是,市面上多数的区块链系统都是仅支持特定的虚拟机类型(如EVM与WASM中的一种),对于已经生态已经发展成熟,应用的迁移以及开发成本是巨大的,用户只能按照区块链要求的虚拟机选择对应的语言去开发智能合约,这就导致了区块链应用开发的局限性。针对一些复查的业务场景,需要WASM虚拟机强悍的性能做支撑,此时就会存在系统无法满足应用需求的问题。
[0005]因此,现有技术存在缺陷,需要改进。

技术实现思路

[0006]本专利技术的目的是克服现有技术的不足,提供一种支持动态切换的双虚拟机系统及方法。
[0007]本专利技术的技术方案如下:提供一种支持动态切换的双虚拟机系统,包括:编译器、
虚拟机标准化接口、以及Juice网络节点,其中:
[0008]编译器:用以将用户编写的智能合约进行编译,并根据虚拟机的类型在合约字节码中插入魔术头标记;
[0009]魔术头标记:使用合约字节码前四字节作为魔术头标记,其中Hex(`60606040`)与Hex(`60806040`)代表适用于EVM虚拟机解释器,使用Hex(`0061736d`)适用于WASM虚拟机解释器;
[0010]虚拟机标准化接口:标准化接口的定义主要是提供统一的虚拟机解释器接入标准,新扩展的虚拟机解释器需要实现若干标准接口,程序调用直接更解耦,功能模块更加独立;
[0011]Juice网络节点:包括虚拟机模块、WASM虚拟机以及EVM虚拟机,通过虚拟机模块与虚拟机标准化接口连接,从而接收编译过的智能合约,并根据智能合约中的魔术头标记识别对应的虚拟机,进行动态选择虚拟机。
[0012]进一步地,所述虚拟机标准化接口包含两个核心函数:Run()函数以及CanRun()函数;其中:
[0013]Run()函数:该函数代定义解释器的运行入口,函数执行完毕则虚拟机解释器运行完毕,并通过对应的响应机制获取到运行结果;
[0014]CanRun()函数:该函数用于校验解释器是否具有执行智能合约对应字节码的能力,如果结果返回True那么代表该智能合约虚拟机可运行当前字节码,如果返回False则表示虚拟机对应的解释器不支持当前待执行的字节码。
[0015]进一步地,所述智能合约源代码的编译类型为Solidity、C语言或C++。
[0016]进一步地,编译智能合约的编译套件采用Juice

Truffle、solc编译器、或Juice

CDT中的一种。
[0017]本专利技术还包括一种支持双虚拟机动态切换的方法,采用上述的支持动态切换的双虚拟机系统,包括如下步骤:
[0018]步骤1:合约编写完成后,使用对应的编译套件进行源代码编译;
[0019]步骤2:在编译的过程中,将魔术头标记插入到合约字节码中;
[0020]步骤3:使用工具包将编译产生合约字节码部署到区块链系统;
[0021]步骤4:部署或调用合约的过程中,根据魔术头标记特征动态选择虚拟机解释器;
[0022]步骤5:根据识别结果,采用相应的虚拟机进行接收与执行。
[0023]进一步地,所述动态选择虚拟机解释器在两种机制中选择,其中:
[0024]一种为直接精确匹配虚拟机解释器;另一种为运行态选择,从虚拟机集中,逐个调用CanRun()函数,根据不同虚拟机解释器的内部判断去校验当前虚拟机是否符合对应魔术字节码。
[0025]采用上述方案,本专利技术在区块链系统中引入多虚拟机模式,并且支持虚拟机解释器根据智能合约的魔术特征动态的选择对应的虚拟机解释器,该方案能增强区块链系统的多样性,多种虚拟机类型则代表可以支持多种智能合约语言对应字节码的运行。强化了系统的完备性,为构造全方位区块链生态系统进一步提供了坚实基础。每集成一个新类型的虚拟机解释器,就对区块链系统的能力进行了一次强扩展,能进一步提高相关应用的实用性、高效性与多样性。
附图说明
[0026]图1为本专利技术的流程示意图。
[0027]图2为魔术头标记的示意图。
[0028]图3为动态选择虚拟机的流程示意图。
具体实施方式
[0029]以下结合附图和具体实施例,对本专利技术进行详细说明。
[0030]请参阅图1,本专利技术提供一种支持动态切换的双虚拟机系统,包括:编译器、虚拟机标准化接口、以及Juice网络节点,其中:
[0031]编译器:用以将用户编写的智能合约进行编译,并根据虚拟机的类型在合约字节码中插入魔术头标记。
[0032]所述智能合约源代码的编译类型为Solidity、C语言或C++。
[0033]编译智能合约的编译套件采用Juice

Truffle、solc编译器、或Juice

CDT中的一种。
[0034]魔术头标记:请参阅图2,在支持多种虚拟机的区块链系统中,智能合约字节码的编译需要使用专用的编译器编译,对于常用的适用于EVM虚拟机的合约可以使用社区官方的编译程序编译。运本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种支持动态切换的双虚拟机系统,其特征在于,包括:编译器、虚拟机标准化接口、以及Juice网络节点,其中:编译器:用以将用户编写的智能合约进行编译,并根据虚拟机的类型在合约字节码中插入魔术头标记;魔术头标记:使用合约字节码前四字节作为魔术头标记,其中Hex(`60606040`)与Hex(`60806040`)代表适用于EVM虚拟机解释器,使用Hex(`0061736d`)适用于WASM虚拟机解释器;虚拟机标准化接口:标准化接口的定义主要是提供统一的虚拟机解释器接入标准,新扩展的虚拟机解释器需要实现若干标准接口,程序调用直接更解耦,功能模块更加独立;Juice网络节点:包括虚拟机模块、WASM虚拟机以及EVM虚拟机,通过虚拟机模块与虚拟机标准化接口连接,从而接收编译过的智能合约,并根据智能合约中的魔术头标记识别对应的虚拟机,进行动态选择虚拟机。2.根据权利要求1所述的支持动态切换的双虚拟机系统,其特征在于,所述虚拟机标准化接口包含两个核心函数:Run()函数以及CanRun()函数;其中:Run()函数:该函数代定义解释器的运行入口,函数执行完毕则虚拟机解释器运行完毕,并通过对应的响应机制获取到运行结果;CanRun()函数:该函数用于校验解释器是否具有执行智能合约对应字节码的能力,如果结果返回True那么代表该智能合约虚拟机可运行当前...

【专利技术属性】
技术研发人员:龚自洪张军李升林姜海涛
申请(专利权)人:矩阵元技术深圳有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1