掌桥专利:专业的专利平台
掌桥专利
首页

一种可插拔智能合约虚拟机系统、及智能合约的调用方法

文献发布时间:2023-06-19 11:08:20


一种可插拔智能合约虚拟机系统、及智能合约的调用方法

技术领域

本发明涉及智能合约的软件接口领域,尤其涉及一种可插拔智能合约虚拟机系统、及智能合约的调用方法。

背景技术

为了兼容目前市场上主流的智能合约,现有skywelld分布式系统集成了不同智能合约虚拟机,来执行智能合约的部署和调用操作。但是其分布式系统执行智能合约时具有以下几点主要缺陷:每次针对不同的智能合约虚拟机,需要修改的工作量太繁琐,容易出错。skywelld分布式系统想要实现其他智能合约,则需要重复上述步骤,以此类推,会出现很多个特定的版本。版本的修改,代码耦合度太高,虚拟机的修改,严重影响了skywelld分布式系统核心代码。不同的虚拟机版本,增加了中间件人员的学习强度。所以亟需一种插拔智能合约虚拟机系统解决上述问题。

发明内容

由于分布式系统中每次加载不同的智能合约虚拟机,需要实时修改的,操作繁琐的问题,且存在需要修改的代码耦合度太高,每次修改都会严重影响了核心代码的问题,所以为解决上述问题,本发明提供以及技术方案。

一种可插拔智能合约虚拟机分布式系统,包括核心模块、智能合约虚拟机、子系统模块;子系统模块包括可插拔智能合约虚拟机模块、SEM虚拟机子系统模块,子系统模块依附在核心系统模块上;

其中,核心模块:用于系统程序的计算,以及调用可子系统模块,并对子系统反馈的数据进行检查判断。可插拔智能合约虚拟机模块:包括多个API接口,通过API接口对智能合约虚拟机进行定制化处理,满足核心模块对智能合约虚拟机处理要求。SEM虚拟机子系统模块:用于调用智能合约虚拟机进行智能合约的实施。智能合约虚拟机:用于实施智能合约。

具体的,可插拔智能合约虚拟机模块中定制化处理包括,通过第一个API接口初始化智能合约虚拟机的基本配置,通过第二个API接口使智能合约虚拟机获取到需要部署的智能合约并进行处理,通过第三个API接口使得智能合约虚拟机的调用结果返回到核心模块。

一种智能合约的调用方法,方法运用于一种可插拔智能合约虚拟机分布式系统,该方法包括以下步骤:

步骤S1:每一个节点加载特定的智能合约虚拟机,并对智能合约虚拟机进行修改,满足核心模块对智能合约虚拟机要求;

步骤S2:智能合约虚拟机通过API接口对智能合约虚拟机进行定制化处理,通过第一个API接口初始化智能合约虚拟机的基本配置,通过第二个API接口使智能合约虚拟机获取到需要部署的智能合约并进行处理,通过第三个API接口使得智能合约虚拟机的调用结果返回到核心模块,处理完成后进行下一步;

步骤S3:核心模块收到中间件层发过来的智能合约的请求,并对智能合约的数据进行判断与检查,将判断与检查结果与阈值对比,如果判断结果不符合阈值要求,则终止合约执行,如果判断结果符合阈值要求,则进行下一个步骤;

步骤S4:核心模块进行智能合约交易的一般性检查,若任一一项检查要求不符合标准,则将错误结果返回给应用层,不再进行下一步的交易;如果检查要求符合标准,则继续进行下一步骤;

步骤S5:核心模块通过发送指令至SEM虚拟机子系统模块,SEM虚拟机子系统模块调用智能合约虚拟机,智能合约虚拟机执行该智能合约;若智能合约执行成功,智能合约虚拟机通过第三API接口将处理数据返回给核心模块,核心模块进行下一步的智能合约交易上链和存储操作,并将合约转发到其他节点进行验证,若操作失败,智能合约虚拟机通过网络请求返回错误码及具体的错误内容到应用层。

步骤S6:核心模块将合约转发到其他节点进行验证,重复上述步骤,满足该API即可完成给节点加载不同智能合约虚拟机的功能实现。

具体的,步骤S1中通过去除智能合约虚拟机中系统不需要的功能,来满足系统的要求。

具体的,步骤S3中对智能合约的数据进行判断的内容包括,数据的类型、大小、格式,判断标准为:若任一一项判断内容与阈值不符合,则判断结果不符合阈值要求,则终止合约执行,若判断内容与阈值全部符合,则执行下一步骤。

具体的,对于步骤S4中一般性检查账户包括账户余额信息、交易账户的合法性,目的账号是否存在及合法性,交易方式的有效性,交易加密数据的完整性,对于一般性检查的判断:若任一一项检查内容不符合标准,则将错误结果返回给应用层,不再进行下一步的交易;如果检查内容全部符合标准,则继续进行下一步骤。

从上述描述中可以得出该发明的优点:

1.每次针对不同的智能合约虚拟机,只需要利用API接口进行调用,不需要针对不同的虚拟机进行调用时进行代码的更改,加载卸载不同的智能合约虚拟机更加方便。除此之外,操作更加灵活,减少大量、重复易出错的工作,减少了不必要的不同的虚拟机版本,从而减轻中间件层开发人员的学习成本。

2.虚拟机的加载和卸载并不涉及到核心模块的内容,而是通过可插拔智能合约虚拟机模块实现,很好的规避了对核心模块的代码污染,有效的隔离无关代码对核心模块的代码的污染。

附图说明

图1为一种可插拔智能合约虚拟机分布式系统工作原理图。

具体实施方式

本发明的技术方案提供了一种智能合约虚拟机接口,如图1所示,其技术方案如下:

一种可插拔智能合约虚拟机分布式系统,包括核心模块、子系统模块、虚拟机;子系统模块包括可插拔智能合约虚拟机模块、SEM虚拟机子系统模块,以及其他多个应用程序子系统模块,子系统模块依附在核心系统模块上;

核心模块:用于系统的计算,以及调用子系统模块,并对子系统反馈的数据进行检查判断。

可插拔智能合约虚拟机模块:包括多个API接口,该模块通过对外开放公有API接口给不同的智能合约虚拟机,对智能合约定制化处理,实现核心模块系统对不同的智能合约的处理。其中定制化处理包括:通过第一个API接口初始化智能合约虚拟机的基本配置;通过第二个API接口使智能合约虚拟机获取到需要部署的智能合约并进行处理;通过第三个API接口使得智能合约虚拟机的调用结果返回到核心模块。

SEM虚拟机子系统模块:用于调用智能合约虚拟机进行智能合约的实施。

智能合约虚拟机:包括EVM智能合约虚拟机,Lua虚拟机等,用于实施智能合约。

一种智能合约的调用方法,通过运用于上述一种可插拔智能合约虚拟机分布式系统实现,该方法包括以下步骤:

步骤S1:每一个节点加载特定的智能合约虚拟机,并对智能合约虚拟机,如EVM虚拟机、LUA虚拟机,进行修改,去除虚拟机中系统不需要的功能,满足系统要求;

步骤S2:智能合约虚拟机通过API接口对智能合约虚拟机进行定制化处理来满足核心模块要求:

(1)第一个API接口通过Void init()初始化智能合约虚拟机的基本配置。

(2)第二个API接口通过Void deploy(void*data)使智能合约虚拟机获取到需要部署的智能合约并进行处理。

(3)第三个API接口通过Void call(void*data)使得智能合约虚拟机的调用结果返回到核心模块。

步骤S3:核心模块收到中间件层发过来的智能合约的请求,并对智能合约数据的大小、格式、类型进行判断并同时进行安全性检查,将判断与检查结果与阈值对比,如果判断结果不符合阈值要求,则终止合约执行,如果判断结果不符合阈值要求,则进行下一个步骤。

其中阈值为:一次请求的数据的大小为1kb;格式为json形式的数据,包括格式为method、secret、transactionType、payload等字段;类型为{"method":"submit","params":[{"secret":"snoPBjXtMeMyMHUVTgbuqAfg1SUTb","tx_json":{"TransactionType":"AlethContract","Account":"jHb9CJAWyB4jr91VRWn96DkukG4bwdtyTh","Method":1,"Destination":"jEZJqL78G5hTnLZ75we2yc2X7xj6XfFwPC","ContractMethod":"3031633661646333","Args":[{"Arg":{"Parameter":"6a706d4b456d32735565766670466a533751486454385378375a476f4558544a417a","ContractParamsType":1}},{"Arg":{"Parameter":"333030","ContractParamsType":0}}]}}]}。

步骤S4:核心模块进行智能合约交易的一般性检查,其中一般性检查包括账户余额信息、交易账户的合法性,目的账号是否存在及合法性,交易方式的有效性,交易加密数据的完整性。若任一一项检查要求不符合标准,则将错误结果返回给应用层,不再进行下一步的交易;如果检查要求符合标准,则继续进行下一步骤;

步骤S5:核心模块通过发送指令至SEM虚拟机子系统模块,SEM虚拟机子系统模块调用智能合约虚拟机,智能合约虚拟机执行该智能合约。若智能合约执行成功,智能合约虚拟机通过API接口将处理数据返回给核心模块,核心模块进行下一步的智能合约交易上链和存储操作;若操作失败,智能合约虚拟机通过网络请求返回错误码及具体的错误内容到应用层。

步骤S6:核心模块将合约转发到其他节点进行验证,重复上述步骤,满足该API即可完成给节点加载不同智能合约虚拟机的功能实现。

从发明内容中可以得出,该方法具有以下优点:

1.每次针对不同的智能合约虚拟机,只需要利用API接口进行调用,不需要针对不同的虚拟机进行调用时进行代码的更改,加载卸载不同的智能合约虚拟机更加方便。除此之外,操作更加灵活,减少大量、重复易出错的工作,减少了不必要的不同的虚拟机版本,从而减轻中间件层开发人员的学习成本。

2.虚拟机的加载和卸载并不涉及到核心模块的内容,而是通过可插拔智能合约虚拟机模块实现,很好的规避了对核心模块的代码污染,有效的隔离无关代码对核心模块的代码的污染。

可以理解的是,以上关于本发明的具体描述,仅用于说明本发明而并非受限于本发明实施例所描述的技术方案。本领域的普通技术人员应当理解,仍然可以对本发明进行修改或等同替换,以达到相同的技术效果;只要满足使用需要,都在本发明的保护范围之内。

相关技术
  • 一种可插拔智能合约虚拟机系统、及智能合约的调用方法
  • 一种基于智能合约的虚拟机系统及其操作方法
技术分类

06120112811253