一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

智能合约执行方法、引擎及区块链节点与流程

2021-11-24 19:57:00 来源:中国专利 TAG:


1.本技术涉及数据处理技术领域,特别涉及区块链技术领域,具体涉及智能合 约执行方法、引擎及区块链节点。


背景技术:

2.自以太坊将区块链系统应用扩展到了数字资产与通用智能合约的范畴以来,智 能合约已经成为第二代区块链的核心标识。以太坊系统提供以太坊虚拟机evm (ethereum virtual machine),合约代码在evm内部运行,以太坊用户使用特定的 语言编写智能合约代码,并编译成evm字节码运行;超级账本(hyperledger fabric) 提供另一种图灵完备的智能合约实现方式,它利用docker容器环境来运行多种语 言实现的智能合约,即智能合约能用多种不同的语言进行编写,之后被编译器编 译并打包进docker镜像,以容器作为运行环境。
3.目前联盟链中主流的智能合约实现方案都是基于docker以容器的方式在区块 链节点外部运行智能合约,智能合约在运行中通过建立grpc链接来实现与区块 链节点的信息交换。
4.然而,现有的以docker grpc的方式,因其定义了一套标准的grpc接口, 且语言支持依赖于grpc协议,因此使得现有的智能合约运行方式存在因grpc 协议的使用导致多语言支持工作量大且易用性差、因采用grpc接口等导致的通 用性差以及因脱离节点运行等造成的安全性差等问题。


技术实现要素:

5.针对现有技术中的问题,本技术提供一种智能合约执行方法、引擎及区块链 节点,能够有效提高智能合约执行的通用性,并能够有效提高智能合约执行的效 率、易扩展性及易用性,能够使得智能合约运行在区块链节点内部的独立环境中 以防止被其他恶意程序破坏,提高智能合约执行的安全性。
6.为解决上述技术问题,本技术提供以下技术方案:
7.第一方面,本技术提供一种智能合约执行方法,包括:
8.基于预设的智能合约全生命周期管理入口获取针对目标区块链节点的区块链 数据处理请求对应的目标处理类型;
9.确定所述目标区块链节点中的虚拟机内的所述目标处理类型对应的智能合约 实例;
10.基于预设的多语言合约工具包执行所述智能合约实例对应的智能合约代码以 生成所述区块链数据处理请求对应的智能合约执行结果;
11.与所述目标区块链节点的账本通讯以生成对应的变更账本数据,并根据该变 更账本数据和所述智能合约执行结果生成对应的区块。
12.进一步地,所述基于预设的智能合约全生命周期管理入口获取针对目标区块 链
节点的区块链数据处理请求对应的目标处理类型,包括:
13.基于预设的智能合约全生命周期管理入口接收针对目标区块链节点的区块链 数据处理请求,其中,该区块链数据处理请求由客户端设备发送至目标区块链节 点,并经该目标区块链节点调取预设的网络协议及共识算法,将所述区块链数据 处理请求同步至目标区块链中的其他区块链节点;
14.获取所述区块链数据处理请求对应的目标处理类型,该目标处理类型包括: 创建、部署或调用。
15.进一步地,所述确定所述目标区块链节点中的虚拟机内的所述目标处理类型 对应的智能合约实例,包括:
16.基于所述目标处理类型和所述区块链数据处理请求对应的执行参数,创建或 调用所述目标区块链节点中的虚拟机内的智能合约实例;
17.以及,为所述智能合约实例添加对应的运行环境数据。
18.进一步地,所述基于预设的多语言合约工具包执行所述智能合约实例对应的 智能合约代码以生成所述区块链数据处理请求对应的智能合约执行结果,包括:
19.基于预设的多语言合约工具包执行所述智能合约实例对应的智能合约代码, 以生成对应的智能合约执行结果;
20.调用预设的节点通讯机制与所述目标区块链节点对应的通讯连接模块之间通 讯。
21.进一步地,所述与所述目标区块链节点的账本通讯以生成对应的变更账本数 据,并根据该变更账本数据和所述智能合约执行结果生成对应的区块,包括:
22.基于所述通讯连接模块与所述目标区块链节点的账本通讯,以根据预设的智 能合约代码逻辑参数对实现所述目标区块链节点的账本和缓存之间的操作,生成 存储有对应的变更账本数据的读写集;
23.基于所述读写集、所述智能合约执行结果、目标区块链当前最新的区块哈希 值以及默克尔树根哈希值,生成所述目标区块链对应的新区块。
24.第二方面,本技术提供一种智能合约执行引擎,包括:
25.合约管理模块,用于基于预设的智能合约全生命周期管理入口获取针对目标 区块链节点的区块链数据处理请求对应的目标处理类型;
26.解析执行模块,用于确定所述目标区块链节点中的虚拟机内的所述目标处理 类型对应的智能合约实例;
27.合约语言工具包模块,用于基于预设的多语言合约工具包执行所述智能合约 实例对应的智能合约代码以生成所述区块链数据处理请求对应的智能合约执行结 果;
28.通讯连接模块,用于与所述目标区块链节点的账本通讯以生成对应的变更账 本数据,并根据该变更账本数据和所述智能合约执行结果生成对应的区块。
29.进一步地,所述智能合约执行引擎还包括:运行环境模块,用于为所述智能 合约实例添加对应的运行环境数据;
30.所述运行环境模块、解析执行模块和合约语言工具包模块构成所述智能合约 执行引擎的一核心层,所述核心层、通讯连接模块和合约管理模块构成所述智能 合约执行引擎的一调用层;
31.所述调用层经由所述通讯连接模块与所述目标区块链节点的节点存储层之间 通讯,其中,该节点存储层用于存储账本、缓存、区块、历史记录以及读写集;
32.所述合约管理模块与所述目标区块链节点的交易处理层之间连接。
33.进一步地,所述智能合约执行引擎中的所述解析执行模块包括wasm解析执 行模块;
34.相对应的,所述核心层还包括:第三方工具,该第三方工具包括:wagon解 释器、wasmer解释器和wavm解释器中的至少一种。
35.第三方面,本技术提供一种电子设备,包括存储器、处理器及存储在存储器 上并可在处理器上运行的计算机程序,所述区块链节点上安装有一智能合约执行 引擎,该智能合约执行引擎用于执行所述的智能合约执行方法,所述处理器执行 所述计算机程序时与所述智能合约执行引擎之间进行数据交互。
36.第四方面,本技术提供一种计算机可读存储介质,其上存储有计算机程序, 该计算机程序被处理器执行时与一智能合约执行引擎之间进行数据交互,该智能 合约执行引擎用于执行所述的智能合约执行方法。
37.由上述技术方案可知,本技术提供的一种智能合约执行方法、引擎及区块链 节点,方法包括:基于预设的智能合约全生命周期管理入口获取针对目标区块链 节点的区块链数据处理请求对应的目标处理类型;确定所述目标区块链节点中的 虚拟机内的所述目标处理类型对应的智能合约实例;基于预设的多语言合约工具 包执行所述智能合约实例对应的智能合约代码以生成所述区块链数据处理请求对 应的智能合约执行结果;与所述目标区块链节点的账本通讯以生成对应的变更账 本数据,并根据该变更账本数据和所述智能合约执行结果生成对应的区块;通过 智能合约全生命周期管理入口以及与所述目标区块链节点的账本通讯的技术设 计,能够有效使得区块链适用于不同的应用场景,能够支持智能合约的动态加载, 进而能够使得区块链平台支持不同智能合约的同时运行,同时能够对合约生命周 期进行管理,具体包括智能合约的部署、实例化、更新、停用等阶段,进而能够 有效提高智能合约执行的通用性;通过多语言合约工具包以及与所述目标区块链 节点的账本通讯的技术设计,使得针对不同语言并不需要额外实现一套单独的 grpc接口,因此能够有效降低扩展多语言工作量,实现友好的多语言支持,进而 能够有效提高智能合约执行的效率、易扩展性及易用性;通过在目标区块链节点 中的虚拟机内执行智能合约,能够使得智能合约运行在独立的环境中以防止被其 他恶意程序破坏,进而能够使得区块链同一时间可能运行着的多个不同业务的智 能合约之间互不干扰彼此独立,进而能够有效提高智能合约执行的安全性,使得 智能合约执行方法具备独立性、图灵完备、多语言支持、灵活扩展等特性。
附图说明
38.为了更清楚地说明本技术实施例或现有技术中的技术方案,下面将对实施例 或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的 附图是本技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳 动的前提下,还可以根据这些附图获得其他的附图。
39.图1是本技术实施例中的智能合约执行引擎、区块链节点与客户端设备之间 的关
系示意图。
40.图2是本技术实施例中的智能合约执行方法的第一种流程示意图。
41.图3是本技术实施例中的智能合约执行方法的第二种流程示意图。
42.图4是本技术实施例中的智能合约执行方法的第三种流程示意图。
43.图5是本技术实施例中的智能合约执行方法的第四种流程示意图。
44.图6是本技术实施例中的智能合约执行方法的第五种流程示意图。
45.图7是本技术实施例中的智能合约执行引擎的结构示意图。
46.图8是本技术提供的智能合约执行引擎与区块链的整体架构分层示意图。
47.图9是本技术应用实例提供的调用层与核心层的子系统划分示意图。
48.图10是本技术应用实例提供的基于智能合约执行引擎实现的智能合约执行方 法的总体流程示意图。
49.图11是本技术应用实例提供的智能合约内部的执行流程示意图。
50.图12是本技术应用实例提供的合约管理模块的整体执行流程示意图。
51.图13是本技术应用实例提供的合约管理模块的功能示意图。
52.图14是本技术应用实例提供的通讯连接模块的功能示意图。
53.图15是本技术应用实例提供的wasm的功能示意图。
54.图16是本技术应用实例提供的运行环境模块的功能示意图。
55.图17是本技术应用实例提供的合约语言工具包模块的功能示意图。
56.图18是本技术实施例中的电子设备的结构示意图。
具体实施方式
57.为使本技术实施例的目的、技术方案和优点更加清楚,下面将结合本技术实 施例中的附图,对本技术实施例中的技术方案进行清楚、完整的描述,显然,所 描述的实施例是本技术一部分实施例,而不是全部的实施例。基于本技术中的实 施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施 例,都属于本技术保护的范围。
58.需要说明的是,本技术公开的智能合约执行方法和装置可用于区块链技术领 域,也可用于除区块链技术领域之外的任意领域,本技术公开的智能合约执行方 法和装置的应用领域不做限定。
59.在本技术的一个或多个实施例中,智能合约最早可以追溯到1995年,最初定 义为“一套以数字形式定义的承诺,包括合约参与方可以在上面执行这些承诺的 协议”,是由用户通过交易部署到区块链中的可执行代码,被指定的交易调用在节 点上执行一些功能,如传递信息、修改区块链状态、进行图灵完备计算等。区块 链与智能合约的结合是区块链2.0的核心也是后续区块链应用与扩展的基石。一方 面,区块链为智能合约的执行提供了无需第三方的可信交易环境,保证合约产生 的交易内容可追踪且不可逆转;另一方面,智能合约也赋予了区块链支撑复杂业 务逻辑的能力,极大的扩宽了区块链的应用场景,为区块链从传统的金融记账领 域向其他领域发展打下了基础。
60.在本技术的一个或多个实施例中,wasm(webassembly)是一种新型的能够, 运行在浏览器中的字节码。它类似于汇编语言,其二进制格式具有很高的紧凑性, 能够极大的缩小目标代码文件的大小、提高应用程序分发效率。此外wasm字节 码具有高效率运行的优
势,同时wasm能够提供像c/c 、rust、golang等类型语 言的编译目标,使得采用这些语言编写的应用程序能够运行于浏览器中。智能合 约系统使用wasm字节码来表示和执行智能合约程序代码,通过wagon、wasmer、 wavm等第三方工具作为智能合约虚拟机执行引擎。
61.在本技术的一个或多个实施例中,rpc的语义是远程过程调用,实际上是指提 供一套机制,使得应用程序之间可以镜像通讯,并且也遵循server/client模型,使 用时client端调用server端提供的接口就像调用本地的函数一样,一般基于tcp长连 接进行数据交互达成。而grpc就是一套高性能、开源的通用rpc框架。
62.在本技术的一个或多个实施例中,容器docker:一种轻量化沙盒虚拟机的实 现技术,容器docker可以让开发者打包应用以及依赖包到一个轻量级、可移植的 容器中,然后可发布到任何linux机器上实现虚拟化。容器完全使用沙箱机制,相 互之间不会有任何接口并且性能开销极低。
63.现有的智能合约执行方式以docker grpc的方式,定义了一套标准的grpc接 口,其多语言的支持依赖于grpc协议对多语言支持,其主要缺点如下:
64.(1)对多语言支持不够友好:针对不同语言除了sdk外都需要额外实现一套 单独的grpc接口,扩展多语言工作量大;
65.(2)通用性较差:基于固定的一套grpc接口接入方式,使得其难以适用于 其他区块链底层;
66.(3)存在安全风险:智能合约以docker容器的方式脱离节点运行提了高区 块链的安全风险,若智能合约容器受到攻击则整个区块链系统都会收到影响。
67.智能合约作为区块链核心业务执行单元,在区块链的交易流程中扮演者至关 重要的作用,因此,基于上述现有的智能合约执行方式存在的问题,本技术的提 供的智能合约执行方法及其中的智能合约,能够与区块链中其他模块相互配合以 达到在性能、通用性方面的改进,因此对于智能合约系统有以下几个方面的需求:
68.(1)通用性方面:为了使得区块链适用于不同的应用场景,合约支撑系统需 要支持智能合约的动态加载,以保证区块链平台支持不同智能合约的同时运行, 对合约生命周期进行管理,具体包括智能合约的部署、实例化、更新、停用等阶 段;
69.(2)安全性方面:区块链同一时间可能运行着多个不同业务的智能合约,每 个合约有自己独立的数据和代码,因此需要保证合约之间互不干扰彼此独立,合 约应该运行在独立的环境中以防止被其他恶意程序破坏;
70.(3)易用性方面:合约需要实现对多语言的支持并在对外的模块设计上使用 面向接口的设计方式,定义标准接口实现,达到多语言易扩展、区块链底层易接 入的目标。
71.本技术克服了现有技术中扩展较复杂、通用性较差以及安全性较差等缺点, 提供了一种易接入、易扩展的区块链多语言的智能合约执行方法、引擎及区块链 节点。
72.基于此,针对现有的智能合约执行方法存在扩展较复杂、通用性较差以及安 全性较差等问题,本技术实施例提供一种智能合约执行方法,基于预设的智能合 约全生命周期管理入口获取针对目标区块链节点的区块链数据处理请求对应的目 标处理类型;确定所述目标区块链节点中的虚拟机内的所述目标处理类型对应的 智能合约实例;基于预设的多语言合约工具包执行所述智能合约实例对应的智能 合约代码以生成所述区块链数据处理请求对应的智能合约执行结果;与所述目标 区块链节点的账本通讯以生成对应的变更
账本数据,并根据该变更账本数据和所 述智能合约执行结果生成对应的区块;通过智能合约全生命周期管理入口以及与 所述目标区块链节点的账本通讯的技术设计,能够有效使得区块链适用于不同的 应用场景,能够支持智能合约的动态加载,进而能够使得区块链平台支持不同智 能合约的同时运行,同时能够对合约生命周期进行管理,具体包括智能合约的部 署、实例化、更新、停用等阶段,进而能够有效提高智能合约执行的通用性;通 过多语言合约工具包以及与所述目标区块链节点的账本通讯的技术设计,使得针 对不同语言并不需要额外实现一套单独的grpc接口,因此能够有效降低扩展多语 言工作量,实现友好的多语言支持,进而能够有效提高智能合约执行的效率、易 扩展性及易用性;通过在目标区块链节点中的虚拟机内执行智能合约,能够使得 智能合约运行在独立的环境中以防止被其他恶意程序破坏,进而能够使得区块链 同一时间可能运行着的多个不同业务的智能合约之间互不干扰彼此独立,进而能 够有效提高智能合约执行的安全性,使得智能合约执行方法具备独立性、图灵完 备、多语言支持、灵活扩展等特性。
73.基于上述内容,本技术还提供一种用于实现本技术一个或多个实施例中提供 的智能合约执行方法的智能合约执行引擎,该智能合约执行引擎可以以虚拟机的 形式安装在区块链节点上,所述区块链节点可以为服务器,参见图1,该区块链节 点可以自行或通过第三方服务器等与各个客户端设备之间依次通信连接。
74.前述的智能合约执行引擎进行智能合约执行的部分可以在如上述内容的服务 器中执行,在另一种实际应用情形中,若所述区块链节点也为一客户端设备,那 么前述的智能合约执行引擎进行智能合约执行的部分也可以所有的操作都在该客 户端设备中完成。具体可以根据所述用户端设备的处理能力,以及用户使用场景 的限制等进行选择。本技术对此不作限定。若所有的操作都在所述客户端设备中 完成,所述客户端设备还可以包括处理器,用于智能合约执行的具体处理。
75.可以理解的是,所述客户端设备可以包括智能手机、平板电子设备、网络机 顶盒、便携式计算机、个人数字助理(pda)、车载设备、智能穿戴设备等任何能够 装载应用的移动设备。其中,所述智能穿戴设备可以包括智能眼镜、智能手表、 智能手环等。
76.上述的客户端设备可以具有通信模块(即通信单元),可以与远程的服务器进 行通信连接,实现与所述服务器的数据传输。所述服务器可以包括任务调度中心 一侧的服务器,其他的实施场景中也可以包括中间平台的服务器,例如与任务调 度中心服务器有通信链接的第三方服务器平台的服务器。所述的服务器可以包括 单台计算机设备,也可以包括多个服务器组成的服务器集群,或者分布式装置的 服务器结构。
77.上述服务器与所述客户端设备之间可以使用任何合适的网络协议进行通信, 包括在本技术提交日尚未开发出的网络协议。所述网络协议例如可以包括tcp/ip 协议、udp/ip协议、http协议、https协议等。当然,所述网络协议例如还可 以包括在上述协议之上使用的rpc协议(remote procedure call protocol,远程过程 调用协议)、rest协议(representational state transfer,表述性状态转移协议)等。
78.具体通过下述各个实施例及应用实例分别进行详细说明。
79.为了解决现有的智能合约执行方法存在扩展较复杂、通用性较差以及安全性 较差等问题,本技术提供一种智能合约执行方法的实施例,参见图2,基于智能合 约执行引擎执行的所述智能合约执行方法具体包含有如下内容:
80.步骤100:基于预设的智能合约全生命周期管理入口获取针对目标区块链节点 的区块链数据处理请求对应的目标处理类型。
81.在步骤100中,智能合约执行引擎中的合约管理模块为其所在的区块链节点 提供智能合约生命周期管理的统一入口,合约管理模块负责提供合约的部署、更 新、调用、验证等方法给节点的执行层或交易处理层调用,以基于预设的智能合 约全生命周期管理入口获取针对目标区块链节点的区块链数据处理请求对应的目 标处理类型。在本技术的一个或多个实施例中,合约管理模块可以写作manager。
82.可以理解的是,区块链中各个区块链节点在虚拟机中执行合约代码(也可称 作调用智能合约),就执行结果达成共识,并相应地更新区块链上智能合约的状态。 智能合约可以基于其收到的交易读/写用户私人存储,将钱存入其账户余额,可以 发送/接收消息或来自用户/其他智能合约的数字资产,甚至创建新的智能合约。
83.步骤200:确定所述目标区块链节点中的虚拟机内的所述目标处理类型对应的 智能合约实例。
84.在步骤200中,智能合约执行引擎中的解析执行模块能够确定(创建新的或 调用已存在的)所述目标区块链节点中的虚拟机内的所述目标处理类型对应的智 能合约实例。解析执行模块为智能合约执行引擎的核心模块,负责解析和执行合 约文件,编译后的合约文件具备高效率、轻量化、跨平台和多语言支持的特性, 配合运行环境提供的各类系统与通讯方法,实现合约的跨平台多语言灵活调用和 执行。同时解析执行模块也提供了一套统一的接口标准,便于集成扩展更优秀的 解析工具。其中,解析执行模块可以采用wasm实现,具体可以写作wasm模块 或wasm解析执行模块。
85.步骤300:基于预设的多语言合约工具包执行所述智能合约实例对应的智能合 约代码以生成所述区块链数据处理请求对应的智能合约执行结果。
86.在步骤300中,智能合约执行引擎中的合约语言工具包模块基于预设的多语 言合约工具包执行所述智能合约实例对应的智能合约代码以生成所述区块链数据 处理请求对应的智能合约执行结果。
87.可以理解的是,合约语言工具包模块主要为智能合约的编写提供通用的依赖 与引用,让合约开发者不需要关注底层实现,如:节点通讯、反射、上下文解析、 账本操作、区块与区块高度查询等。具体可以采用sdk来满足多语言支持的特性, 需要根据不同的语言实现不同版本的封装,并且需要与运行环境配合联调实现。
88.步骤400:与所述目标区块链节点的账本通讯以生成对应的变更账本数据,并 根据该变更账本数据和所述智能合约执行结果生成对应的区块。
89.在步骤400中,智能合约执行引擎中的通讯连接模块与所述目标区块链节点 的账本通讯以生成对应的变更账本数据,并根据该变更账本数据和所述智能合约 执行结果生成对应的区块。其中,通讯连接模块可以写作bridge。
90.可以理解的是,通讯连接模块是节点和合约的中间层,在负责节点与合约运 行时通讯的同时还作为节点与合约虚拟机交互的统一入口,为节点提供合约实例 创建、虚拟机管理、存储、合约持久化等交互方法。合约编写中的账本/缓存、事 件等常用系统级方法的调用也在通讯连接模块bridge中实现,有效的对合约环境 和节点环境进行了隔离,便于后续扩展和集成更多的合约执行模式;同时,通讯 连接模块也定义了各类交互的参数和接口
规范。
91.从上述描述可知,本技术实施例提供的智能合约执行方法,通过智能合约全 生命周期管理入口以及与所述目标区块链节点的账本通讯的技术设计,能够有效 使得区块链适用于不同的应用场景,能够支持智能合约的动态加载,进而能够使 得区块链平台支持不同智能合约的同时运行,同时能够对合约生命周期进行管理, 具体包括智能合约的部署、实例化、更新、停用等阶段,进而能够有效提高智能 合约执行的通用性;通过多语言合约工具包以及与所述目标区块链节点的账本通 讯的技术设计,使得针对不同语言并不需要额外实现一套单独的grpc接口,因此 能够有效降低扩展多语言工作量,实现友好的多语言支持,进而能够有效提高智 能合约执行的效率、易扩展性及易用性;通过在目标区块链节点中的虚拟机内执 行智能合约,能够使得智能合约运行在独立的环境中以防止被其他恶意程序破坏, 进而能够使得区块链同一时间可能运行着的多个不同业务的智能合约之间互不干 扰彼此独立,进而能够有效提高智能合约执行的安全性,使得智能合约执行方法 具备独立性、图灵完备、多语言支持、灵活扩展等特性。
92.为了对合约生命周期进行管理,在本技术提供的智能合约执行方法的一个实 施例,参见图3,所述智能合约执行方法的步骤100具体包含有如下内容:
93.步骤110:基于预设的智能合约全生命周期管理入口接收针对目标区块链节点 的区块链数据处理请求,其中,该区块链数据处理请求由客户端设备发送至目标 区块链节点,并经该目标区块链节点调取预设的网络协议及共识算法,将所述区 块链数据处理请求同步至目标区块链中的其他区块链节点。
94.步骤120:获取所述区块链数据处理请求对应的目标处理类型,该目标处理类 型包括:创建、部署或调用。
95.具体来说,合约管理模块manager负责对节点上的合约进行管控,作为智能 合约管理入口,为节点提供全生命周期管理服务。合约管理模块manager围绕着 合约的生命周期管理来设计,合约的生命周期分为合约部署、合约实例化、合约 更新、合约停用和合约重用等阶段。平台使用者按照合约开发规范编写智能合约 后,通过部署接口即可将合约部署到平台的每个分布式节点上,每个节点都将保 存一份独立的智能合约;之后调用实例化接口,生命周期合约管理模块将为合约 的运行做好相应的准备并启动以server形式运行的合约;此时合约即可对外提供 服务,通过合约调用接口发送合约调用请求后将触发合约具体方法的执行;如果 合约功能需要停用或更新时调用合约停用和更新接口即可完成。
96.从上述描述可知,本技术实施例提供的智能合约执行方法,通过提供合约的 部署、更新、调用、验证等方法给节点的执行层或交易处理层调用,使区块链节 点不需要关注合约引擎内部的实现,简化了接入过程与调用过程,能够有效使得 区块链适用于不同的应用场景,能够支持智能合约的动态加载,进而能够使得区 块链平台支持不同智能合约的同时运行,同时能够对合约生命周期进行管理,具 体包括智能合约的部署、实例化、更新、停用等阶段,进而能够有效提高智能合 约执行的通用性。
97.为了使得智能合约运行在独立的环境中以防止被其他恶意程序破坏,在本申 请提供的智能合约执行方法的一个实施例,参见图4,所述智能合约执行方法的步 骤200具体包含有如下内容:
98.步骤210:基于所述目标处理类型和所述区块链数据处理请求对应的执行参 数,
创建或调用所述目标区块链节点中的虚拟机内的智能合约实例。
99.步骤220:为所述智能合约实例添加对应的运行环境数据。
100.具体来说,利用解析执行模块中export输出与import引入等特性构建中间方 实现合约执行、合约通讯、数据交换等系统方法,规范合约编写机制。其中,通 讯连接模块bridge作为通讯层实现了区块链节点与wasm虚拟机的通讯机制;合 约sdk制定了各类语言的合约编写规范,封装了合约相关方法,使合约开发者不 需要关注底层实现;合约管理模块manager为节点提供了智能合约生命周期管理 的统一入口;运行环境runtime为wasm虚拟机提供了运行环境和系统方法的支持, 包括合约数据交换、方法执行等;解析执行模块实现了底层智能合约虚拟机运行 机制,负责处理智能合约实例化、注销以及执行等操作。
101.从上述描述可知,本技术实施例提供的智能合约执行方法,通过负责解析和 执行智能合约文件,编译后的智能合约文件具备高效率、轻量化、跨平台和多语 言支持的特性,配合运行环境提供的各类系统与通讯方法,实现合约的跨平台多 语言灵活调用和执行,能够使得智能合约运行在独立的环境中以防止被其他恶意 程序破坏,进而能够使得区块链同一时间可能运行着的多个不同业务的智能合约 之间互不干扰彼此独立,进而能够有效提高智能合约执行的安全性,使得智能合 约执行方法具备独立性、图灵完备、多语言支持、灵活扩展等特性。
102.为了提高智能合约执行的效率、易扩展性及易用性,在本技术提供的智能合 约执行方法的一个实施例,参见图5,所述智能合约执行方法的步骤300具体包含 有如下内容:
103.步骤310:基于预设的多语言合约工具包执行所述智能合约实例对应的智能合 约代码,以生成对应的智能合约执行结果。
104.步骤320:调用预设的节点通讯机制与所述目标区块链节点对应的通讯连接模 块之间通讯。
105.具体来说,智能合约支持go、c/c 、java等常用语言开发,编写时可通过 合约sdk提供的方法实现合约开发获取、插入、删除、获取交易id等常用操作。 wasm本身只是一个指令集,并没有限定运行环境,因此只要实现相应的解释器, wasm也可以运行在非浏览器环境。智能合约的运行正是这样的应用场景,通过 用c 、go、rust等高级语言来编写智能合约,再编译成wasm字节码,最后 由基于第三方工具封装的虚拟机来运行。基于wasm多语言支持的特性,智能合 约将能够用可以编译成wasm的任何语言开发,并通过其import的特性实现合约 与节点的信息交换与其他系统级功能(内存与资源分配等)的支持,同时集成相 应的编译工具以支持主流语言编译成wasm。
106.从上述描述可知,本技术实施例提供的智能合约执行方法,通过为合约的编 写提供通用的依赖与引用,让合约开发者不需要关注底层实现,如:节点通讯、 反射、上下文解析、账本操作、区块与区块高度查询等,sdk能够满足多语言支持 的特性,可以根据不同的语言实现不同版本的封装,能够有效降低扩展多语言工 作量,实现友好的多语言支持,进而能够有效提高智能合约执行的效率、易扩展 性及易用性。
107.为了提高智能合约执行的通用性、易扩展性及易用性,在本技术提供的智能 合约执行方法的一个实施例,参见图6,所述智能合约执行方法的步骤400具体包 含有如下内容:
108.步骤410:基于所述通讯连接模块与所述目标区块链节点的账本通讯,以根据 预
设的智能合约代码逻辑参数对实现所述目标区块链节点的账本和缓存之间的操 作,生成存储有对应的变更账本数据的读写集。
109.步骤420:基于所述读写集、所述智能合约执行结果、目标区块链当前最新的 区块哈希值以及默克尔树根哈希值,生成所述目标区块链对应的新区块。
110.可以理解的是,通讯连接模块作为中间层继承了合约创建、部署、管理、存储、 上下文等合约操作层面的方法,为节点提供了统一的合约访问与调用的入口。
111.从上述描述可知,本技术实施例提供的智能合约执行方法,通过负责节点与 合约运行时通讯的同时还作为节点与合约虚拟机交互的统一入口,为节点提供合 约实例创建、虚拟机管理、存储、合约持久化等交互方法,合约编写中的账本/缓 存、事件等常用系统级方法的调用也在通讯模块中实现,有效的对合约环境和节 点环境进行了隔离,便于后续扩展和集成更多的合约执行模式,能够有效提高智 能合约执行的通用性、易扩展性及易用性。
112.从软件层面来说,为了解决现有的智能合约执行方法存在扩展较复杂、通用 性较差以及安全性较差等问题,本技术提供一种用于执行所述智能合约执行方法 中全部或部分内容的智能合约执行引擎的实施例,参见图7,所述智能合约执行引 擎具体包含有如下内容:
113.合约管理模块10,用于基于预设的智能合约全生命周期管理入口获取针对目 标区块链节点的区块链数据处理请求对应的目标处理类型;
114.解析执行模块20,用于确定所述目标区块链节点中的虚拟机内的所述目标处 理类型对应的智能合约实例;
115.合约语言工具包模块30,用于基于预设的多语言合约工具包执行所述智能合 约实例对应的智能合约代码以生成所述区块链数据处理请求对应的智能合约执行 结果;
116.通讯连接模块40,用于与所述目标区块链节点的账本通讯以生成对应的变更 账本数据,并根据该变更账本数据和所述智能合约执行结果生成对应的区块。
117.本技术提供的智能合约执行引擎的实施例具体可以用于执行上述实施例中的 智能合约执行方法的实施例的处理流程,其功能在此不再赘述,可以参照上述方 法实施例的详细描述。
118.从上述描述可知,本技术实施例提供的智能合约执行引擎,通过智能合约全 生命周期管理入口以及与所述目标区块链节点的账本通讯的技术设计,能够有效 使得区块链适用于不同的应用场景,能够支持智能合约的动态加载,进而能够使 得区块链平台支持不同智能合约的同时运行,同时能够对合约生命周期进行管理, 具体包括智能合约的部署、实例化、更新、停用等阶段,进而能够有效提高智能 合约执行的通用性;通过多语言合约工具包以及与所述目标区块链节点的账本通 讯的技术设计,使得针对不同语言并不需要额外实现一套单独的grpc接口,因此 能够有效降低扩展多语言工作量,实现友好的多语言支持,进而能够有效提高智 能合约执行的效率、易扩展性及易用性;通过在目标区块链节点中的虚拟机内执 行智能合约,能够使得智能合约运行在独立的环境中以防止被其他恶意程序破坏, 进而能够使得区块链同一时间可能运行着的多个不同业务的智能合约之间互不干 扰彼此独立,进而能够有效提高智能合约执行的安全性,使得智能合约执行方法 具备独立性、图灵完备、多语言支持、灵活扩展等特性。
119.在本技术提供的智能合约执行引擎的一个实施例,所述智能合约执行引擎还 具体包含有如下内容:
120.运行环境模块,用于为所述智能合约实例添加对应的运行环境数据;所述运 行环境模块、解析执行模块和合约语言工具包模块构成所述智能合约执行引擎的 一核心层,所述核心层、通讯连接模块和合约管理模块构成所述智能合约执行引 擎的一调用层;所述调用层经由所述通讯连接模块与所述目标区块链节点的节点 存储层之间通讯,其中,该节点存储层用于存储账本、缓存、区块、历史记录以 及读写集;所述合约管理模块与所述目标区块链节点的交易处理层之间连接。
121.从上述描述可知,本技术实施例提供的智能合约执行引擎,通讯连接模块作 为通讯层实现了区块链节点与虚拟机的通讯机制;合约语言工具包模块制定了各 类语言的合约编写规范,封装了合约相关方法,使合约开发者不需要关注底层实 现;合约管理模块为节点提供了智能合约生命周期管理的统一入口;运行环境为 虚拟机提供了运行环境和系统方法的支持,包括合约数据交换、方法执行等;解 析执行模块实现了底层智能合约虚拟机运行机制,负责处理智能合约实例化、注 销以及执行等操作。
122.在本技术提供的智能合约执行引擎的一个实施例,所述解析执行模块包括 wasm解析执行模块;相对应的,所述核心层还包括:第三方工具,该第三方工 具包括:wagon解释器、wasmer解释器和wavm解释器中的至少一种。
123.从上述描述可知,本技术实施例提供的智能合约执行引擎,利用wasm中 export输出与import引入等特性构建中间方实现合约执行、合约通讯、数据交换 等系统方法,规范合约编写机制。智能合约支持go、c/c 、java等常用语言开 发,编写时可通过合约sdk提供的方法实现合约开发获取、插入、删除、获取交 易id等常用操作。合约编写完成之后利用工具生成wasm可执行文件,智能合约 系统使用整合好的第三方工具进行解析或编译,如:wagon、wasmer、wavm等。
124.参见图8,智能合约执行引擎的整体架构分层中各层说明如下:
125.(1)核心层:智能合约核心逻辑实现,提供wasm第三方工具处理、多语 言sdk支持、虚拟机运行环境系统方法、智能合约的编译、实例化、运行等核心 生命周期方法等。
126.其中,核心层中的第三方是指第三方工具,底层利用wasmer工具作为wasm 的解析器,也可用其他wasm解析器替代,如wagon、wavm等。因此在图1中, 具体可以采用如wagon、wasmer、wavm等wasm解释器,wasmer结合了各种独 立的运行时与工具包,用于编译并定位webassembly二进制代码,包括 webassembly模块、cli可执行应用以及嵌入至现有代码中的二进制库等等; wavm是用于webassembly的独立虚拟机,它使用可以将webassembly代码编译 为具有接近本机性能的机器代码。
127.其中,核心层中的runtime是指wasm的运行环境模块,其中实现了不同语言 与编译工具依赖的系统级方法,确保wasm能被后续模块正常解析执行。且其中的 go、c/c 以及java均是指计算机编程语言,java是一门面向对象编程语言,不 仅吸收了c 语言的各种优点,还摒弃了c 里难以理解的多继承、指针等概念, 因此java语言具有功能强大和简单易用两个特征。go语言一般指go。go(又称 golang)是google的robert griesemer、rob pike及ken thompson开发的一种 静态强类型、编译型语言。go语言语法与c相近,但功能上有:内存安全,gc (垃圾回收),结构形态及csp

style并发计算。c语言是一种结构化语言。
它层 次清晰,便于按模块化方式组织程序,易于调试和维护。c语言的表现能力和处 理能力极强。
128.(2)调用层:作为智能合约与区块链节点通讯的入口,主要分为合约管理模 块manager和通讯连接模块bridge两个部分,合约管理模块manager为节点提供 智能合约全生命周期管理入口;通讯连接模块bridge则作为智能合约与节点通讯 的实现,包括wasm虚拟机与节点、wasm虚拟机与账本或存储层等。
129.其中,合约管理模块中的deploy为合约部署入口、invoke为合约方法调用入 口,validate提供了合约校验确保合约能正常部署与管理,upgrade为合约升级入 口。
130.(3)节点存储层:实现区块链数据存储缓存机制,统一处理智能合约读写集 与世界账本和区块、交易数据相关。
131.(4)交易处理层:是区块链接入层,负责交易转换、签名、验证并通过参数 与智能合约的调用层进行通讯实现智能合约的全生命周期控制。
132.其中,交易处理层中的grpc是指通用rpc框架;http是指超文本传输协 议(hypertext transfer prtcl)。
133.为了进一步说明本方案,本技术应用实例提供一种用于实现智能合约执行方 法的易接入、易扩展的区块链多语言的智能合约执行引擎,具体说明如下:
134.智能合约不仅仅是区块链上的一段可执行代码,而且是构建在区块链上包含 智能合约语言运行环境、执行方法等的一个完整计算系统。本发明的多语言智能 合约系统采用基于wasm的虚拟机方式实现,具备独立性、图灵完备、多语言支 持、灵活扩展等特性,其与区块链的整体架构分层参见图8。
135.其中,调用层与核心层为智能合约执行引擎的核心组成部分,调用层与核心 层的子系统划分参见图9,本技术应用实例整体思路为利用wasm中export输出 与import引入等特性构建中间方实现合约执行、合约通讯、数据交换等系统方法, 规范合约编写机制。其中,通讯连接模块bridge作为通讯层实现了区块链节点与 wasm虚拟机的通讯机制;合约sdk制定了各类语言的合约编写规范,封装了合 约相关方法,使合约开发者不需要关注底层实现;合约管理模块manager为节点 提供了智能合约生命周期管理的统一入口;运行环境runtime为wasm虚拟机提供 了运行环境和系统方法的支持,包括合约数据交换、方法执行等;wasm实现了 底层智能合约虚拟机运行机制,负责处理智能合约实例化、注销以及执行等操作。
136.综上所述,智能合约支持go、c/c 、java等常用语言开发,编写时可通过 合约sdk提供的方法实现合约开发获取、插入、删除、获取交易id等常用操作。 合约编写完成之后利用工具生成wasm可执行文件,智能合约系统使用整合好的第 三方工具进行解析或编译,如:wagon、wasmer、wavm等,并通过wasm的import 特性引入runtime运行时模块,实现系统级相关的通用方法;节点通讯方面,通讯 连接模块bridge中封装并实现了访问节点账本与缓存等内容的常用方法;runtime 集成了通用方法,实现了对bridge的通讯和调用;brigde则作为中间层继承了合约 创建、部署、管理、存储、上下文等合约操作层面的方法,为节点提供了统一的 合约访问与调用的入口。manager负责提供合约的部署、更新、调用、验证等方法 给节点的执行层或交易处理层调用。
137.(一)总体流程
138.区块链中各个节点在虚拟机中执行合约代码(也可称作调用智能合约),就执 行结果达成共识,并相应地更新区块链上智能合约的状态。智能合约可以基于其 收到的交易读/写用户私人存储,将钱存入其账户余额,可以发送/接收消息或来自 用户/其他智能合约的数字资产,甚至创建新的智能合约。参见图10,基于智能合 约执行引擎实现的智能合约执行方法的总体流程如下:
139.①
发起交易:客户端向区块链节点发起交易,区块链节点对交易进行分析处 理,根据条件进入共识阶段。
140.②
共识阶段:节点根据一定的网络协议和共识算法,将交易同步到其他区块 链节点并保证其一致性。
141.③
合约执行:构建/调用虚拟机实例,执行智能合约代码。
142.④
合约通讯:调用合约中的虚拟机实例的运行时和系统级方法访问bridge通 讯连接模块,实现与节点的通讯。
143.⑤
账本处理:通过bridge通讯连接模块完成账本和缓存的互操作,生成读写 集或变更账本数据,实现智能合约业务逻辑处理。
144.⑥
区块生成:基于智能合约执行结果、上个区块哈希、读写集、默克尔树根 哈希等信息,生成新的区块。
145.本技术应用实例中区块链底层接入主要通过manager合约管理与bridge通讯 连接两个模块实现。bridge通讯连接模块则作为中间层连接合约引擎与区块链节 点数据层实现合约执行过程中与区块链节点的数据交换。因此区块链底层接入合 约需要按规范实现基本的数据存储接口来实现合约引擎能与区块链数据层的通 讯。执行过程中,在合约内部合约代码通过sdk层提供的相应接口访问到bridge 模块与区块链节点层进行通讯,sdk层封装了智能合约多种语言的调用层实现, 为合约开发者实现了一套统一的调用机制。
146.参见图11,基于上述的智能合约执行方法的总体流程,其中的智能合约内部 的执行流程如下:
147.①
发起调用:通过manager模块提供的接口以及相关执行参数,发起合约的 执行。
148.②
实例创建:bridge模块根据合约语言类型、合约代码字节流、交易类型、 方法名称等执行参数,创建相应的wasm虚拟机实例。
149.③
方法导入:runtime模块负责实现各类语言的系统方法依赖,这些方法实 现了节点通讯与虚拟机环境调用等核心功能。
150.④
合约执行:wasm模块通过wasm虚拟机实例,传递相应参数,调用智能 合约指定方法。
151.⑤
合约通讯:合约执行时,通过合约sdk模块封装的通用标准方法,调用 runtime模块引入的节点通讯机制,实现与节点bridge模块通讯。
152.⑥
账本处理:根据智能合约代码逻辑以及相应参数对账本以及节点缓存进行 操作并返回结果。
153.其中,合约管理模块manager中集成了合约的创建、部署、验证、调用、查 询、更新、删除等合约生命周期管理方法,manager是合约访问的统一入口,它的 存在使区块链节点不需要关注合约引擎内部的实现,简化了接入过程与调用过程。 合约在创建之后便会将合约信息加载到manager的合约清单中接受manager模块 管控到部署时再进行实例化并加载
到实例化清单供后续调用。区块链底层在完成 处理交易时可根据相应的交易请求解析确认合约参数,如果是创建合约则解析交 易中合约二进制文件调用manager中的创建接口;如果是执行合约则访问manager 中的调用接口在实例化清单中找到指定的合约实例调用指定方法。合约管理模块 的整体执行流程参见图12。
154.(二)各模块介绍
155.(1)合约管理模块
156.参见图13,合约管理模块manager负责对节点上的合约进行管控,作为智能 合约管理入口,为节点提供全生命周期管理服务。合约管理模块manager围绕着 合约的生命周期管理来设计,合约的生命周期分为合约部署、合约实例化、合约 更新、合约停用和合约重用等阶段。各个阶段对合约状态的影响如图13所示。平 台使用者按照合约开发规范编写智能合约后,通过部署接口即可将合约部署到平 台的每个分布式节点上,每个节点都将保存一份独立的智能合约;之后调用实例 化接口,生命周期合约管理模块将为合约的运行做好相应的准备并启动以server 形式运行的合约;此时合约即可对外提供服务,通过合约调用接口发送合约调用 请求后将触发合约具体方法的执行;如果合约功能需要停用或更新时调用合约停 用和更新接口即可完成。其中,deploy为合约部署入口、invoke为合约方法调用 入口,validate提供了合约校验确保合约能正常部署与管理,upgrade为合约升级 入口,list为列表。
157.(2)通讯连接模块
158.参见图14,通讯连接模块bridge是节点和合约的中间层,在负责节点与合约 运行时通讯的同时还作为节点与合约虚拟机交互的统一入口,为节点提供合约实 例创建、虚拟机管理、存储、合约持久化等交互方法。合约编写中的账本/缓存、 事件等常用系统级方法的调用也在通讯连接模块bridge中实现,有效的对合约环 境和节点环境进行了隔离,便于后续扩展和集成更多的合约执行模式;同时,通 讯连接模块bridge也定义了各类交互的参数和接口规范。codeprovider:提供合约 持久化存储的具体实现,为manager模块提供合约持久化服务。
159.instance:合约实例调用的入口,定义了wasm实例接口规范,对内与wasm 模块进行交互,为底层各类语言的wasm实例提供注册;对外则可根据不同的参数 配置提供不同类型的wasm实例创建服务。
160.registry:实例注册入口,对外提供合约实例注册调用。
161.context:智能合约执行层上下文管理服务,上下文提供智能合约执行核心方 法和信息,如:账本交互、交易id、用户、交易类型、合约执行结果和读写集等; 并按需求扩展跨合约与跨链调用入口,支撑与跨链模块无缝集成。
162.syscall:处理通讯,为合约提供节点账本/缓存等需要与节点交互的通用调用。
163.event:实现事件注册和监听相关处理。
164.(3)wasm
165.参见图15,wasm为智能合约系统的核心模块,负责解析和执行wasm合约 文件,编译后的wasm合约文件具备高效率、轻量化、跨平台和多语言支持的特性, 配合runtime提供的各类系统与通讯方法,实现合约的跨平台多语言灵活调用和 执行。同时wasm模块也提供了一套统一的接口标准,便于集成扩展更优秀的 wasm解析工具。主要功能模块如下:
166.creator:实现合约虚拟机创建create、移除remove、解析compile等功能;
167.instance:合约实例,实现合约执行exec、发布release、上下文context解析、 内存memory占用等功能;
168.(4)运行环境模块
169.参见图16,运行环境模块runtime是智能合约执行层的核心模块,通过wasm 的import特性将各个运行时方法引入到合约虚拟机中。由于不同语言对wasm的 处理不一样,导致其编译之后的wasm内部执行机制的实现也不一样,因此不同语 言我们需要实现不用的runtime实例来实现一些系统级或通用的方法辅助wasm虚 拟机完整的执行整个智能合约业务逻辑;同时runtime是整个智能合约与节点通 讯机制的核心,是bridge与合约通讯、系统方法调用等相关功能的具体实现。
170.其中的语言language包括:go语言、c 语言、rust语言等等。
171.common:合约启动、退出、事件以及虚拟机通用方法等;
172.call:与bridge通讯的实现,提供put、get、delete、iterator等核心调用方法;
173.env:提供合约虚拟机hash、序列化、反序列化等应用功能,并集成环境、内 存、日志等系统级通用方法;
174.从整体上看runtime实现并不复杂,但其多语言支持导致各类实现并不一致, 下面将针对golang语言为例,分析runtime模块数据结构和接口设计。
175.runtime结构体中实现了大量的数据处理和数据转换方法,由于wasm内部支 持的数据类型有限,合约代码中的相应类型最终都会通过上述方法转换成wasm内 部可识别的类型,runtime就为wasm提供并实现了这些功能,其中针对复杂类型 如array和object,runtime中也定义了中转的数据类型,作为中间转换器并实现 了相关处理。不同的语言由于对wasm支持和处理机制不一致也会有不同的实现。
176.(5)合约语言工具包模块
177.参见图17,合约语言工具包模块sdk主要为合约的编写提供通用的依赖与引 用,让合约开发者不需要关注底层实现,如:节点通讯、反射、上下文解析、账 本操作、区块与区块高度查询等。智能合约sdk(smart contract sdk)需满足多 语言支持的特性,需要根据不同的语言实现不同版本的封装,并且需要与runtime 模块配合联调实现。其中的语言包括:go语言、c语言、c 语言、java等。
178.本技术应用实例引入webassembly(wasm)作为合约底层执行引擎,主流语言 通过编译工具编译成可执行的wasm文件。wasm作为可执行文件具备以下优势:
179.性能方面:webassembly有一套完整的语义,实际上wasm是体积小且加载 快的二进制格式,其目标就是充分发挥硬件能力以达到原生执行效率;
180.安全方面:webassembly运行在一个沙箱化的执行环境中,甚至可以在现有 的javascript虚拟机中实现。在web环境中,webassembly将会严格遵守同源策 略以及浏览器安全策略;
181.多语言支持方面:wasm本身只是一个指令集,并没有限定运行环境,因此 只要实现相应的解释器,wasm也可以运行在非浏览器环境。智能合约的运行正 是这样的应用场景,通过用c 、go、rust等高级语言来编写智能合约,再编译 成wasm字节码,最后由基于第三方工具封装的虚拟机来运行。基于wasm多 语言支持的特性,智能合约将能够用可以编译
成wasm的任何语言开发,并通过 其import的特性实现合约与节点的信息交换与其他系统级功能(内存与资源分配 等)的支持,同时集成相应的编译工具以支持主流语言编译成wasm。
182.除去上述wasm本身带来的优点之外,本技术应用实例引入了manager模块 不仅实现了对wasm实例生命周期的管理,还为外部调用提供了统一的入口,使 接入的区块链底层不需要关注智能合约模块的底层实现,充分体现了易接入、易 使用的特性,提升了区块链底层与智能合约引擎的对接效率。
183.综上所述,本技术应用实例具有如下创新点:
184.(1)引入wasm作为合约执行引擎;
185.(2)构建一套基于wasm的合约通讯、执行与数据交换机制;
186.(3)构建了go、rust、c/c 、java的编译、执行机制;
187.(4)实现了面向接口的易扩展、易接入模块。
188.从硬件层面来说,为了解决现有的智能合约执行方法存在扩展较复杂、通用 性较差以及安全性较差等问题,本技术提供一种安装有用于实现所述智能合约执 行方法中的全部或部分内容的智能合约执行引擎的区块链节点的实施例,该区块 链节点具体可以提现为一电子设备,所述电子设备具体包含有如下内容:
189.图18为本技术实施例的电子设备9600的系统构成的示意框图。如图18所示, 该电子设备9600可以包括中央处理器9100和存储器9140;存储器9140耦合到中 央处理器9100。值得注意的是,该图18是示例性的;还可以使用其他类型的结构, 来补充或代替该结构,以实现电信功能或其他功能。
190.在一实施例中,与智能合约执行引擎之间进行数据交互的功能可以被集成到 中央处理器中。其中,中央处理器可以被配置为进行如下控制:
191.步骤1:接收客户端设备发送的真的目标区块链的区块链数据处理请求;
192.步骤2:调取预设的网络协议及共识算法,将所述区块链数据处理请求同步至 目标区块链中的其他区块链节点;
193.步骤3:将所述区块链数据处理请求经所述智能合约执行引擎的智能合约全生 命周期管理入口发送至所述智能合约执行引擎以使该智能合约执行引擎执行如步 骤100至步骤400等的智能合约执行方法。
194.从上述描述可知,本技术实施例提供的电子设备,通过将所述区块链数据处 理请求经所述智能合约执行引擎的智能合约全生命周期管理入口发送至所述智能 合约执行引擎以使该智能合约执行引擎执行如步骤100至步骤400等的智能合约 执行方法,使得智能合约执行引擎通过智能合约全生命周期管理入口以及与所述 目标区块链节点的账本通讯的技术设计,能够有效使得区块链适用于不同的应用 场景,能够支持智能合约的动态加载,进而能够使得区块链平台支持不同智能合 约的同时运行,同时能够对合约生命周期进行管理,具体包括智能合约的部署、 实例化、更新、停用等阶段,进而能够有效提高智能合约执行的通用性;通过多 语言合约工具包以及与所述目标区块链节点的账本通讯的技术设计,使得针对不 同语言并不需要额外实现一套单独的grpc接口,因此能够有效降低扩展多语言工 作量,实现友好的多语言支持,进而能够有效提高智能合约执行的效率、易扩展 性及易用性;通过在目标区块链节点中的虚拟机内执行智能合约,能够使得智能 合约运行
在独立的环境中以防止被其他恶意程序破坏,进而能够使得区块链同一 时间可能运行着的多个不同业务的智能合约之间互不干扰彼此独立,进而能够有 效提高智能合约执行的安全性,使得智能合约执行方法具备独立性、图灵完备、 多语言支持、灵活扩展等特性。
195.在另一个实施方式中,与智能合约执行引擎之间进行数据交互的功能可以与 中央处理器9100分开配置,例如可以将与智能合约执行引擎之间进行数据交互的 功能配置为与中央处理器9100连接的芯片,通过中央处理器的控制来实现智能合 约执行功能。
196.如图18所示,该电子设备9600还可以包括:通信模块9110、输入单元9120、 音频处理器9130、显示器9160、电源9170。值得注意的是,电子设备9600也并 不是必须要包括图18中所示的所有部件;此外,电子设备9600还可以包括图18 中没有示出的部件,可以参考现有技术。
197.如图18所示,中央处理器9100有时也称为控制器或操作控件,可以包括微 处理器或其他处理器装置和/或逻辑装置,该中央处理器9100接收输入并控制电子 设备9600的各个部件的操作。
198.其中,存储器9140,例如可以是缓存器、闪存、硬驱、可移动介质、易失性 存储器、非易失性存储器或其它合适装置中的一种或更多种。可储存上述与失败 有关的信息,此外还可存储执行有关信息的程序。并且中央处理器9100可执行该 存储器9140存储的该程序,以实现信息存储或处理等。
199.输入单元9120向中央处理器9100提供输入。该输入单元9120例如为按键或 触摸输入装置。电源9170用于向电子设备9600提供电力。显示器9160用于进行 图像和文字等显示对象的显示。该显示器例如可为lcd显示器,但并不限于此。
200.该存储器9140可以是固态存储器,例如,只读存储器(rom)、随机存取存 储器(ram)、sim卡等。还可以是这样的存储器,其即使在断电时也保存信息, 可被选择性地擦除且设有更多数据,该存储器的示例有时被称为eprom等。存 储器9140还可以是某种其它类型的装置。存储器9140包括缓冲存储器9141(有 时被称为缓冲器)。存储器9140可以包括应用/功能存储部9142,该应用/功能存储 部9142用于存储应用程序和功能程序或用于通过中央处理器9100执行电子设备 9600的操作的流程。
201.存储器9140还可以包括数据存储部9143,该数据存储部9143用于存储数据, 例如联系人、数字数据、图片、声音和/或任何其他由电子设备使用的数据。存储 器9140的驱动程序存储部9144可以包括电子设备的用于通信功能和/或用于执行 电子设备的其他功能(如消息传送应用、通讯录应用等)的各种驱动程序。
202.通信模块9110即为经由天线9111发送和接收信号的发送机/接收机9110。通 信模块(发送机/接收机)9110耦合到中央处理器9100,以提供输入信号和接收输 出信号,这可以和常规移动通信终端的情况相同。
203.基于不同的通信技术,在同一电子设备中,可以设置有多个通信模块9110, 如蜂窝网络模块、蓝牙模块和/或无线局域网模块等。通信模块(发送机/接收机) 9110还经由音频处理器9130耦合到扬声器9131和麦克风9132,以经由扬声器9131 提供音频输出,并接收来自麦克风9132的音频输入,从而实现通常的电信功能。 音频处理器9130可以包括任何合适的缓冲器、解码器、放大器等。另外,音频处 理器9130还耦合到中央处理器9100,从而使得可以通过麦克风9132能够在本机 上录音,且使得可以通过扬声器9131来播放本机上存
储的声音。
204.本技术的实施例还提供能够实现与上述实施例中的智能合约执行方法中全部 步骤的智能合约执行引擎之间进行数据交互的一种计算机可读存储介质,所述计 算机可读存储介质上存储有计算机程序,该计算机程序被处理器执行时实现与上 述实施例中的智能合约执行引擎之间进行数据交互的全部步骤,例如,所述处理 器执行所述计算机程序时实现下述步骤:
205.步骤1:接收客户端设备发送的真的目标区块链的区块链数据处理请求;
206.步骤2:调取预设的网络协议及共识算法,将所述区块链数据处理请求同步至 目标区块链中的其他区块链节点;
207.步骤3:将所述区块链数据处理请求经所述智能合约执行引擎的智能合约全生 命周期管理入口发送至所述智能合约执行引擎以使该智能合约执行引擎执行如步 骤100至步骤400等的智能合约执行方法。
208.从上述描述可知,本技术实施例提供的计算机可读存储介质,通过将所述区 块链数据处理请求经所述智能合约执行引擎的智能合约全生命周期管理入口发送 至所述智能合约执行引擎以使该智能合约执行引擎执行如步骤100至步骤400等 的智能合约执行方法,使得智能合约执行引擎通过智能合约全生命周期管理入口 以及与所述目标区块链节点的账本通讯的技术设计,能够有效使得区块链适用于 不同的应用场景,能够支持智能合约的动态加载,进而能够使得区块链平台支持 不同智能合约的同时运行,同时能够对合约生命周期进行管理,具体包括智能合 约的部署、实例化、更新、停用等阶段,进而能够有效提高智能合约执行的通用 性;通过多语言合约工具包以及与所述目标区块链节点的账本通讯的技术设计, 使得针对不同语言并不需要额外实现一套单独的grpc接口,因此能够有效降低扩 展多语言工作量,实现友好的多语言支持,进而能够有效提高智能合约执行的效 率、易扩展性及易用性;通过在目标区块链节点中的虚拟机内执行智能合约,能 够使得智能合约运行在独立的环境中以防止被其他恶意程序破坏,进而能够使得 区块链同一时间可能运行着的多个不同业务的智能合约之间互不干扰彼此独立, 进而能够有效提高智能合约执行的安全性,使得智能合约执行方法具备独立性、 图灵完备、多语言支持、灵活扩展等特性。
209.本领域内的技术人员应明白,本发明的实施例可提供为方法、装置、或计算 机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软 件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计 算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd

rom、 光学存储器等)上实施的计算机程序产品的形式。
210.本发明是参照根据本发明实施例的方法、设备(装置)、和计算机程序产品的 流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图 中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提 供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程 数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理 设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图 一个方框或多个方框中指定的功能的装置。
211.这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以 特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令 产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或 方框图一个方框或多个方框中指定的功能。
212.这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得 在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从 而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多 个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
213.本发明中应用了具体实施例对本发明的原理及实施方式进行了阐述,以上实 施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的 一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之 处,综上所述,本说明书内容不应理解为对本发明的限制。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献