智能合约执行方法、系统、装置和存储介质制造方法及图纸

技术编号:29677286 阅读:18 留言:0更新日期:2021-08-13 22:00
本说明书实施例公开了一种智能合约执行方法、系统、装置和存储介质。所述方法包括由运行在宿主环境中的区块链节点进程实现的节点流程,以及由运行在安全容器中的进程实现的合约流程。所述安全容器为与所述宿主环境不共享内核的容器。所述节点流程包括:接收区块链交易;响应于接收到区块链交易,在所述安全容器中创建进程,以执行所述区块链交易调用的智能合约的原生执行代码,所述原生执行代码的格式与所述智能合约的源代码所属的高级语言对应;获得所述区块链交易的执行结果。所述合约流程包括:在所述安全容器中执行所述智能合约的原生执行代码。

【技术实现步骤摘要】
智能合约执行方法、系统、装置和存储介质
本说明书涉及信息
,特别涉及一种智能合约执行方法、系统、装置和存储介质。
技术介绍
智能合约(简称合约)开发是区块链开发的重要组成部分,当前区块链业界大部分链是将用高级语言编写的合约源代码编译成低端字节码后,在该低端字节码匹配的虚拟机中运行智能合约(即执行该低端字节码)。然而,支持转换低端字节码的高级语言种类有限,即采用上述合约执行方式时可供选择的高级语言种类有限,无法满足各类高级语言开发者开发智能合约的需求。
技术实现思路
本说明书实施例之一提供一种智能合约执行方法。所述方法包括由运行在宿主环境中的区块链节点进程实现的节点流程,以及由运行在安全容器中的进程实现的合约流程,所述安全容器为与所述宿主环境不共享内核的容器。其中,所述节点流程包括:接收区块链交易;响应于接收到区块链交易,在所述安全容器中创建进程,以执行所述区块链交易调用的智能合约的原生执行代码,所述原生执行代码的格式与所述智能合约的源代码所属的高级语言对应;获得所述区块链交易的执行结果。所述合约流程包括:在所述安全容器中执行所述智能合约的原生执行代码。本说明书实施例之一提供一种智能合约执行系统。所述系统包括运行在宿主环境中的区块链节点进程以及运行在安全容器中的进程,所述安全容器为与所述宿主环境不共享内核的容器。其中,所述区块链节点进程用于:接收区块链交易,响应于接收到区块链交易,在所述安全容器中创建进程,以执行所述区块链交易调用的智能合约的原生执行代码,所述原生执行代码与所述智能合约的源代码所属的高级语言对应;获得所述区块链交易的执行结果。所述安全容器中的进程用于:在所述安全容器中执行所述智能合约的原生执行代码。本说明书实施例之一提供一种智能合约执行装置。所述装置包括处理器和存储设备,所述存储设备用于存储指令,当所述处理器执行指令时,实现如本说明书任一实施例所述的智能合约执行方法。本说明书实施例之一提供一种计算机存储介质,所述存储介质存储有指令,当处理器执行指令时,实现如本说明书任一实施例所述的智能合约执行方法。附图说明本说明书将以示例性实施例的方式进一步说明,这些示例性实施例将通过附图进行详细描述。这些实施例并非限制性的,在这些实施例中,相同的编号表示相同的结构,其中:图1是根据本说明书一些实施例所示的智能合约执行方法的流程示意图;图2是根据本说明书一些实施例所示的智能合约执行方法的交互示意图。具体实施方式为了更清楚地说明本说明书实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单的介绍。显而易见地,下面描述中的附图仅仅是本说明书的一些示例或实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图将本说明书应用于其它类似情景。除非从语言环境中显而易见或另做说明,图中相同标号代表相同结构或操作。应当理解,本文使用的“系统”、“装置”、“单元”和/或“模组”是用于区分不同级别的不同组件、元件、部件、部分或装配的一种方法。然而,如果其他词语可实现相同的目的,则可通过其他表达来替换所述词语。如本说明书中所示,除非上下文明确提示例外情形,“一”、“一个”、“一种”和/或“该”等词并非特指单数,也可包括复数。一般说来,术语“包括”与“包含”仅提示包括已明确标识的步骤和元素,而这些步骤和元素不构成一个排它性的罗列,方法或者设备也可能包含其它的步骤或元素。本说明书中使用了流程图用来说明根据本说明书的实施例的系统所执行的操作。应当理解的是,前面或后面操作不一定按照顺序来精确地执行。相反,可以按照倒序或同时处理各个步骤。同时,也可以将其他操作添加到这些过程中,或从这些过程移除某一步或数步操作。首先介绍本说明书中涉及的一些基本概念。区块链交易(简称交易)可以用于记录各类事件和/或数据。在一些实施例中,交易记录的事件可以包括表征新节点的加入、节点的退出、转账等中的一种或多种。在一些实施例中,交易记录的数据可以包括医疗信息、电子合同、电子凭据、电子订单、数字指纹等中的一种或多种。期望的代码可以通过交易触发执行,也可称作交易的执行,区块链节点可以是交易的执行者。仅作为示例,用于记录转账行为的交易可以触发对转账双方账户余额的更新,用于存证数据的交易可以触发将数据写入区块链数据,用于查询数据的交易可以触发对区块链数据的查询,等等。在一些实施例中,交易的执行可包括智能合约的调用。智能合约(简称合约)可以指分布式存储于区块链系统中各节点的可在一定条件下自动执行的数字化协议。智能合约本质是一段运行在区块链网络中的代码,用于完成用户所赋予的业务逻辑。随着区块链的不断发展,其应用场景不断延伸,越来越多的开发者加入区块链开发。区块链开发中,智能合约开发十分重要。当前区块链业界大部分链是将用高级语言编写的合约源代码编译成低端字节码后,在该低端字节码匹配的虚拟机中运行智能合约(即执行该低端字节码)。例如,以太坊的合约开发者通常选择用Solidity语言编写合约源代码。相应地,将用Solidity语言编写的合约源代码编译成evm格式的字节码(简称evm字节码)后,可在EVM虚拟机中执行该evm字节码。又如,EOS(EnterpriseOperatingSystem,企业操作系统)的合约开发者大多选择用C++语言编写合约源代码。相应地,将用C++语言编写的合约源代码编译成wasm格式的字节码(简称wasm字节码)后,可在WASM(WebAssembly)虚拟机中执行该wasm字节码。虚拟机的一些特性能够在一定程度上保障合约安全(如过滤代码中的不安全语句),合约安全包括但不限于不允许合约获取非授权的数据,如访问本地磁盘文件、访问网络资源等,以及/或者不允许合约行为破坏宿主环境(操作系统)的安全,如不允许智能合约获得一些影响操作系统正常运行的调用权限(比如fork,kill,chmod,ptrace等)。然而,支持转换成低端字节码的高级语言种类有限,使得上述合约执行方式下可供选择的高级语言种类有限,无法满足各类高级语言开发者开发智能合约的需求。虽然也有区块链架构(如Fabric)支持以原生执行方式执行智能合约,但却没有对合约的操作权限进行限制以保障合约安全,例如,一些联盟链架构仅依靠授权成员的加入来保障合约安全。在没有对合约的操作权限进行限制的情况下,如果存在一些安全漏洞,同时刚好有“作恶”的智能合约利用安全漏洞,很可能导致隐私数据的泄露、节点的不可靠运行等问题。需要说明的是,原生执行方式也称作传统/常规执行方式,是指将用高级语言编写的源代码编译成原生执行代码(区别于低端字节码)来执行。例如,对于Java语言,原生执行方式是指将用Java语言编写的源代码编译成class格式的字节码来执行。又如,对于C++语言,原生执行方式是指将用C++语言编写的源代码编译成与目标CPU架构匹配的字节码,可以理解,这里的目标CPU架构特指用于执行合约的CPU架构。每种高级语言对本文档来自技高网...

【技术保护点】
1.一种智能合约执行方法,其中,所述方法包括由运行在宿主环境中的区块链节点进程实现的节点流程,以及由运行在安全容器中的进程实现的合约流程,所述安全容器为与所述宿主环境不共享内核的容器;/n其中,所述节点流程包括:接收区块链交易;响应于接收到区块链交易,在所述安全容器中创建进程,以执行所述区块链交易调用的智能合约的原生执行代码,所述原生执行代码的格式与所述智能合约的源代码所属的高级语言对应;获得所述区块链交易的执行结果;/n所述合约流程包括:在所述安全容器中执行所述智能合约的原生执行代码。/n

【技术特征摘要】
1.一种智能合约执行方法,其中,所述方法包括由运行在宿主环境中的区块链节点进程实现的节点流程,以及由运行在安全容器中的进程实现的合约流程,所述安全容器为与所述宿主环境不共享内核的容器;
其中,所述节点流程包括:接收区块链交易;响应于接收到区块链交易,在所述安全容器中创建进程,以执行所述区块链交易调用的智能合约的原生执行代码,所述原生执行代码的格式与所述智能合约的源代码所属的高级语言对应;获得所述区块链交易的执行结果;
所述合约流程包括:在所述安全容器中执行所述智能合约的原生执行代码。


2.如权利要求1所述的方法,其中,所述响应于接收到区块链交易,在所述安全容器中创建进程,包括:
响应于接收到区块链交易,在所述安全容器中创建守护进程;所述守护进程用于:在所述安全容器中创建用于执行所述智能合约的原生执行代码的合约执行进程,从所述区块链节点进程获取所述智能合约的原生执行代码,并将所述原生执行代码传递至所述合约执行进程。


3.如权利要求2所述的方法,其中,所述守护进程包括通信模块和合约运行模块;其中,所述通信模块用于与所述区块链节点进程进行通信,所述通信包括获取所述智能合约的原生执行代码;所述合约运行模块用于从所述通信模块获取所述智能合约的原生执行代码,并将其传递至所述合约执行进程。


4.如权利要求2所述的方法,其中,所述执行所述智能合约的原生执行代码,包括:
从所述区块链节点进程获取所述智能合约中变量的值,设置所述变量的值,并将设置后的所述变量的值返回给所述区块链节点进程,以使所述区块链节点进程获得所述区块链交易的执行结果。


5.如权利要求1所述的方法,其中,所述区块链节点进程包括用于接收区块链交易的容器接口,所述区块链节点进程还包括容器管理模块,所述容器管理模块用于:响应于所述容器接口接收到区块链交易,创建安全容器并在所述安全容器中创建进程,以执行所述区块链交易调用的智...

【专利技术属性】
技术研发人员:林志平
申请(专利权)人:支付宝杭州信息技术有限公司
类型:发明
国别省市:浙江;33

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

1