CN112685136A - 一种智能合约运行方法、装置、设备及存储介质 - Google Patents
一种智能合约运行方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN112685136A CN112685136A CN202110018109.8A CN202110018109A CN112685136A CN 112685136 A CN112685136 A CN 112685136A CN 202110018109 A CN202110018109 A CN 202110018109A CN 112685136 A CN112685136 A CN 112685136A
- Authority
- CN
- China
- Prior art keywords
- virtual machine
- contract
- target
- intelligent contract
- running
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 56
- 230000004044 response Effects 0.000 claims description 3
- 238000010586 diagram Methods 0.000 description 8
- 238000007726 management method Methods 0.000 description 8
- 230000008569 process Effects 0.000 description 7
- 238000012545 processing Methods 0.000 description 6
- 238000012544 monitoring process Methods 0.000 description 4
- 230000006978 adaptation Effects 0.000 description 3
- 238000004891 communication Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 239000007787 solid Substances 0.000 description 3
- 238000012550 audit Methods 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 238000012423 maintenance Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000002159 abnormal effect Effects 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 230000003190 augmentative effect Effects 0.000 description 1
- 238000013475 authorization Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000003862 health status Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 238000012954 risk control Methods 0.000 description 1
- 230000001052 transient effect Effects 0.000 description 1
- 238000012384 transportation and delivery Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Images
Landscapes
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本申请公开了一种智能合约运行方法、装置、设备及存储介质,涉及区块链技术领域,所述方法包括:接收目标智能合约的运行请求,运行请求包括目标智能合约的目标合约类型;从预先构建的虚拟机池中确定处于空闲状态的初选虚拟机;从初选虚拟机中选取与目标合约类型对应的目标虚拟机;将目标虚拟机的状态设置为工作状态;利用处于工作状态的目标虚拟机运行目标智能合约。利用本申请实施例提供的技术方案可以实现虚拟机的有效复用,进而提升区块链平台的整体运行效率和***性能。
Description
技术领域
本申请涉及区块链技术领域,尤其涉及一种智能合约运行方法、装置、设备及存储介质。
背景技术
随着区块链技术的发展,基于区块链网络的业务模式愈发常见,部署在区块链上的智能合约是一种旨在以信息化方式传播、验证或执行合同的计算机协议;相关技术中,智能合约运行时,通常创建一个临时的虚拟机用于执行智能合约代码,运行完毕后该虚拟机将不再使用,直到被***回收销毁。但上述相关技术中在运行智能合约时创建虚拟机会有较大的时间开销,也会消耗CPU资源,且重复创建销毁虚拟机,增加了***垃圾回收负担,严重影响了智能合约运行过程中的***性能。因此,需要提供更可靠或更有效的方案。
发明内容
本申请提供了一种智能合约运行方法、装置、设备及存储介质,可以实现运行智能合约的虚拟机的有效复用,进而提升区块链平台的整体运行效率和***性能。
一方面,本申请提供了一种智能合约运行方法,所述方法包括:
接收目标智能合约的运行请求,所述运行请求包括所述目标智能合约的目标合约类型;
从预先构建的虚拟机池中确定处于空闲状态的初选虚拟机;
从所述初选虚拟机中选取与所述目标合约类型对应的目标虚拟机;
将所述目标虚拟机的状态设置为工作状态;
利用处于工作状态的所述目标虚拟机运行所述目标智能合约。
另一方面提供了一种智能合约运行装置,所述装置包括:
运行请求接收模块,被配置为执行接收目标智能合约的运行请求,所述运行请求包括所述目标智能合约的目标合约类型;
初选虚拟机确定模块,被配置为执行从预先构建的虚拟机池中确定处于空闲状态的初选虚拟机;
目标虚拟机确定模块,被配置为执行从所述初选虚拟机中选取与所述目标合约类型对应的目标虚拟机;
第一状态设置模块,被配置为执行将所述目标虚拟机的状态设置为工作状态;
智能合约运行模块,被配置为执行利用处于工作状态的所述目标虚拟机运行所述目标智能合约。
另一方面提供了一种智能合约运行设备,所述设备包括处理器和存储器,所述存储器中存储有至少一条指令或至少一段程序,所述至少一条指令或所述至少一段程序由所述处理器加载并执行以实现如上述的智能合约运行方法。
另一方面提供了一种计算机可读存储介质,所述存储介质中存储有至少一条指令或至少一段程序,所述至少一条指令或所述至少一段程序由处理器加载并执行以实现如上述的智能合约运行方法。
本申请提供的智能合约运行方法、装置、设备及存储介质,具有如下技术效果:
本申请通过预先构建虚拟机池,在接收到目标智能合约的运行请求时,可以直接选取该与目标智能合约的目标合约类型对应的处于空闲状态的目标虚拟机来进行目标智能合约的运行,可以实现虚拟机的有效复用,大大节约后续智能合约运行时的***开销,提升智能合约的运行效率,进而提升整个区块链网络的吞吐量。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案和优点,下面将对实施例或现有技术描述中所需要使用的附图作简单的介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它附图。
图1是本申请实施例提供的一种应用环境的示意图;
图2是本申请实施例提供的一种智能合约运行方法的流程示意图;
图3是本申请实施例提供的一种预先构建虚拟机池的流程示意图;
图4是本申请实施例提供的一种确定初始化容量的流程示意图;
图5是本申请实施例提供的一种在所述空虚拟机池中,创建所述初始化容量个空闲状态的虚拟机,得到所述虚拟机池的流程示意图;
图6是本申请实施例提供的一种虚拟机池更新方法的流程示意图;
图7是本申请实施例提供的另一种智能合约运行方法的流程示意图;
图8是本申请实施例提供的一种智能合约运行装置的结构示意图;
图9是本申请实施例提供的另一种智能合约运行装置的结构示意图;
图10是本申请实施例提供的一种实现智能合约运行方法的服务器的硬件结构框图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。
需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、***、产品或服务器不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。区块链(Blockchain),本质上是一个去中心化的数据库,是一串使用密码学方法相关联产生的数据块,每一个数据块中包含了一批次网络交易的信息,用于验证其信息的有效性(防伪)和生成下一个区块。区块链可以包括区块链底层平台、平台产品服务层以及应用服务层。
区块链底层平台可以包括用户管理、基础服务、智能合约以及运营监控等处理模块。其中,用户管理模块负责所有区块链参与者的身份信息管理,包括维护公私钥生成(账户管理)、密钥管理以及用户真实身份和区块链地址对应关系维护(权限管理)等,并且在授权的情况下,监管和审计某些真实身份的交易情况,提供风险控制的规则配置(风控审计);基础服务模块部署在所有区块链节点设备上,用来验证业务请求的有效性,并对有效请求完成共识后记录到存储上,对于一个新的业务请求,基础服务先对接口适配解析和鉴权处理(接口适配),然后通过共识算法将业务信息加密(共识管理),在加密之后完整一致的传输至共享账本上(网络通信),并进行记录存储;智能合约模块负责合约的注册发行以及合约触发和合约执行,开发人员可以通过某种编程语言定义合约逻辑,发布到区块链上(合约注册),根据合约条款的逻辑,调用密钥或者其它的事件触发执行,完成合约逻辑,同时还提供对合约升级注销的功能;运营监控模块主要负责产品发布过程中的部署、配置的修改、合约设置、云适配以及产品运行中的实时状态的可视化输出,例如:告警、监控网络情况、监控节点设备健康状态等。
平台产品服务层提供典型应用的基本能力和实现框架,开发人员可以基于这些基本能力,叠加业务的特性,完成业务逻辑的区块链实现。应用服务层提供基于区块链方案的应用服务给业务参与方进行使用。
请参阅图1,图1是本申请实施例提供的一种应用环境的示意图,如图1所示,该应用环境可以包括多个区块链节点101。
本说明书实施例中,每个区块链节点101上可以部署有虚拟机池,在一个可选的实施例中,区块链节点可以包括智能手机、台式计算机、平板电脑、笔记本电脑、智能音箱、数字助理、增强现实(augmentedreality,AR)/虚拟现实(virtual reality,VR)设备、智能可穿戴设备等类型的客户端设备。在一个可选的实施例中,区块链节点可以包括独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式***,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN(Content DeliveryNetwork,内容分发网络)、以及大数据和人工智能平台等基础云计算服务的云服务器。
以下介绍本申请一种智能合约运行方法,图2是本申请实施例提供的一种智能合约运行方法的流程示意图,本说明书提供了如实施例或流程图所述的方法操作步骤,但基于常规或者无创造性的劳动可以包括更多或者更少的操作步骤。实施例中列举的步骤顺序仅仅为众多步骤执行顺序中的一种方式,不代表唯一的执行顺序。在实际中的***或服务器产品执行时,可以按照实施例或者附图所示的方法顺序执行或者并行执行(例如并行处理器或者多线程处理的环境)。具体的如图2所示,所述方法可以包括:
S201:接收目标智能合约的运行请求。
本说明书实施例中,目标智能合约可以为部署在区块链节点上的智能合约中当前需要运行的智能合约。所述运行请求可以包括所述目标智能合约的目标合约类型;目标合约类型可以为目标智能合约的合约类型。
在实际应用中,智能合约是一种计算机化的协议,是可以执行某个合约的条款,通过部署在共享账本上的用于在满足一定条件时而执行的代码。在实际应用中,不同用户往往会结合各自的需求,采用不同的编程语言编写智能合约,相应的,部署在区块链节点上的智能合约可以对应多种不同的合约类型。
在一个具体的实施例中,智能合约的合约类型可以包括但不限于Solidity(编程语言)合约、go(编程语言)合约,js(编程语言)合约、wasm(编程语言)合约等。具体的,合约类型为Solidity合约的智能合约可以为采用Solidity编程语言编写的智能合约。合约类型为go合约的智能合约可以为采用go编程语言编写的智能合约。合约类型为js合约的智能合约可以为采用js编程语言编写的智能合约。合约类型为wasm合约的智能合约可以为采用wasm编程语言编写的智能合约。
S203:从预先构建的虚拟机池中确定处于空闲状态的初选虚拟机。
本说明书实施例中,可以预先构建虚拟机池。在一个具体的实施例中,上述方法还可以包括:预先构建虚拟机池的步骤,如图3所示,预先构建虚拟机池可以包括:
S301:生成预设容量的空虚拟机池;
S303:确定初始化容量;
S305:在所述空虚拟机池中,创建所述初始化容量个空闲状态的虚拟机,得到所述虚拟机池。
本说明书实施例中,上述预设容量可以表征空虚拟机池容纳虚拟机的数量上限。具体的,空虚拟机池可以为能容纳预设容量的虚拟机的数据结构,在一个可选的实施例中,该数据结构可以包括但不限于数组、map(键-值对)形式的数据结构。
本说明书实施例中,可以结合实际应用需求,预先设置需要构建的虚拟机的数量(即初始化容量)。相应的,虚拟机池可以为包括初始化容量个空闲状态的虚拟机的数据结构。上述初始化容量小于等于预设容量。
本说明书实施例中,为了便于后续虚拟机的复用,可以为虚拟机维护两个状态:空闲状态和工作状态。具体的,处于工作状态的虚拟机可以为正在运行智能合约的虚拟机。处于空闲状态的虚拟机可以为当前未在运行智能合约,可以被调用,以运行智能合约的虚拟机。
在一个具体的实施例中,如图4所示,上述确定初始化容量可以包括:
S3031:确定部署的智能合约的合约类型;
S3033:当所述合约类型包括至少两种合约类型时,确定每个合约类型的智能合约数量;
S3035:根据所述每个合约类型的智能合约数量,设置所述每个合约类型对应的虚拟机数量;
S3037:将所述至少两种的合约类型对应的虚拟机数量之和,作为所述初始化容量。
本说明书实施例中,为了有效应对不同用户的不同需求,可以结合部署在区块链节点上智能合约的合约类型来创建相应的虚拟机。本说明书实施例中,考虑到当区块链节点上部署了至少两种合约类型的智能合约时,由于不同合约类型的智能合约的数量不同,导致后续对虚拟机的需求也不同,相应的,本说明书实施例中,可以结合每个合约类型的智能合约数量来设置这个合约类型对应的虚拟机数量。具体的,智能合约数量与对应的虚拟机数量可以成正比。在一个可选的实施例中,可以将智能合约数量作为对应的虚拟机数量,此外,也可以预先设置智能合约数量与对应的虚拟机数量间的比例,例如2:1,具体的可以结合实际应用需求进设置。
在一个具体的实施例中,如图5所示,上述在所述空虚拟机池中,创建所述初始化容量个空闲状态的虚拟机,得到所述虚拟机池可以包括:
S3051:为所述每个合约类型的智能合约创建对应的虚拟机数量个对应类型的虚拟机;
S3053:将创建的虚拟机的状态设置为空闲状态,得到所述初始化容量个空闲状态的虚拟机;
S3055:在所述空虚拟机池中,添加所述初始化容量个空闲状态的虚拟机,得到所述虚拟机池。
本说明书实施例中,每种智能合约对应类型的虚拟机可以为能够运行该合约类型对应编程语言的虚拟机,在一个具体的实施例中,例如wasm合约对应的是wasm虚拟机;js合约对应的是js虚拟机。
上述实施例中,通过预先构建虚拟机池,可以大大节约后续智能合约运行时的***开销,进而提升智能合约的运行效率,且结合区块链节点上述部署的智能合约的合约类型,以及每个合约类型对应的智能合约数量来确定创建的虚拟机对应类型和对应的数量,可以满足不同用户的不同需求,大大提升区块链节点应对各种业务需求的灵活性。
在一个可选的实施例中,如图6所示,上述方法还包括:
S307:响应于智能合约更新指令,确定更新的智能合约的更新合约类型;
S309:当所述虚拟机池中不存在与所述更新合约类型相匹配的空闲状态的虚拟机时,根据所述预设容量和所述初始化容量确定所述更新合约类型对应的虚拟机数量;
S311:创建与所述更新合约类型对应的虚拟机数量个虚拟机;
S313:将所述更新合约类型对应的虚拟机数量个虚拟机的状态设置为空闲状态;
S315:基于处于空闲状态的所述更新合约类型对应的虚拟机数量个虚拟机,更新所述虚拟机池。
在实际应用中,当有新的智能合约部署到区块链节点上时,可以结合更新的智能合约的更新合约类型(即新部署的智能合约的合约类型)来判断是否需要新建虚拟机。在一个具体的实施例中,为了便于后续快速运行新部署的智能合约,当虚拟机池中不存在与更新合约类型相匹配的空闲状态的虚拟机时,根据所述预设容量和所述初始化容量确定所述更新合约类型对应的虚拟机数量。具体的,可以结合预设容量和初始化容量确定虚拟机池是否还可以容纳更多的虚拟机,当预设容量大于初始化容量时,可以确定预设容量与初始化容量间的容量差;在一个可选的实施例中,可以将该容量差作为更新合约类型对应的虚拟机数量;可选的,也可以选取小于该容量差的数值作为更新合约类型对应的虚拟机数量。
在一个可选的实施例中,当虚拟机池中存在与更新合约类型相匹配的空闲状态的虚拟机,可以不创建新的虚拟机。
本说明书实施例中,通过在智能合约部署时,就创建对应类型的虚拟机,可以大大节约后续智能合约运行时的***开销,进而提升智能合约的运行效率。
S205:从所述初选虚拟机中选取与所述目标合约类型对应的目标虚拟机。
本说明书实施例中,可以从初选虚拟机中选取与所述目标合约类型对应的目标虚拟机。
此外,需要说明的是,当预先构建的虚拟机池中不存在与目标合约类型对应的处于空闲状态的虚拟机的情况下,也可以新建目标合约类型对应的虚拟机,以便基于该新建的虚拟机运行智能合约。
S207:将所述目标虚拟机的状态设置为工作状态。
本说明书实施例中,为了避免同一虚拟机在同一时刻被用来处理不同的智能合约带来的异常情况,可以将目标虚拟机的状态设置为工作状态。
S209:利用处于工作状态的所述目标虚拟机运行所述目标智能合约。
在一个具体的实施例中,所述运行请求还包括合约接口信息和合约标识信息;所述利用处于工作状态的所述目标虚拟机运行所述目标智能合约包括:
控制处于工作状态的所述目标虚拟机加载所述合约标识信息对应的合约代码,以使所述目标虚拟机根据所述合约接口信息执行所述合约代码。
在一个具体的实施例中,如图7所示,上述方法还包括:
S211:当所述目标虚拟机运行完所述目标智能合约时,将所述目标虚拟机的状态设置为空闲状态;
S213:对所述目标虚拟机进行初始化设置。
本说明书实施例中,对目标虚拟机进行初始化设置可以包括将目标虚拟机中的合约代码进行清空,以避免后续该目标虚拟机被用来运行其他智能合约时,带来的数据污染问题。
由以上本说明书实施例提供的技术方案可见,本说明书通过预先构建虚拟机池,在接收到目标智能合约的运行请求时,可以直接选取与该目标智能合约的目标合约类型对应的处于空闲状态的目标虚拟机来进行目标智能合约的运行,可以实现虚拟机的有效复用,大大节约后续智能合约运行时的***开销,提升智能合约的运行效率,进而提升整个区块链网络的吞吐量。
本申请实施例还提供了一种智能合约运行装置,如图8所示,所述装置包括:
运行请求接收模块810,可以被配置为执行接收目标智能合约的运行请求,所述运行请求包括所述目标智能合约的目标合约类型;
初选虚拟机确定模块820,可以被配置为执行从预先构建的虚拟机池中确定处于空闲状态的初选虚拟机;
目标虚拟机确定模块830,可以被配置为执行从所述初选虚拟机中选取与所述目标合约类型对应的目标虚拟机;
第一状态设置模块840,可以被配置为执行将所述目标虚拟机的状态设置为工作状态;
智能合约运行模块850,可以被配置为执行利用处于工作状态的所述目标虚拟机运行所述目标智能合约。
在一个可选的实施例中,所述装置还包括:
空虚拟机池生成模块,被配置为执行生成预设容量的空虚拟机池,所述预设容量表征所述空虚拟机池容纳虚拟机的数量上限;
初始化容量确定模块,被配置为执行确定初始化容量,所述初始化容量小于等于所述预设容量;
虚拟机池创建模块,被配置为执行在所述空虚拟机池中,创建所述初始化容量个空闲状态的虚拟机,得到所述虚拟机池。
在一个可选的实施例中,所述初始化容量确定模块包括:
合约类型确定单元,被配置为执行确定部署的智能合约的合约类型;
智能合约数量确定单元,被配置为执行当所述合约类型包括至少两种合约类型时,确定每个合约类型的智能合约数量;
虚拟机数量设置单元,被配置为执行根据所述每个合约类型的智能合约数量,设置所述每个合约类型对应的虚拟机数量;
初始化容量确定单元,被配置为执行将所述至少两种的合约类型对应的虚拟机数量之和,作为所述初始化容量。
在一个可选的实施例中,所述虚拟机池创建模块包括:
虚拟机创建单元,被配置为执行为所述每个合约类型的智能合约创建对应的虚拟机数量个对应类型的虚拟机;
状态设置单元,被配置为执行将创建的虚拟机的状态设置为空闲状态,得到所述初始化容量个空闲状态的虚拟机;
虚拟机添加单元,被配置为执行在所述空虚拟机池中,添加所述初始化容量个空闲状态的虚拟机,得到所述虚拟机池。
在一个可选的实施例中,所述装置还包括:
的更新合约类型确定模块,被配置为执行响应于智能合约更新指令,确定更新的智能合约的更新合约类型;
虚拟机数量确定模块,被配置为执行当所述虚拟机池中不存在与所述更新合约类型相匹配的空闲状态的虚拟机时,根据所述预设容量和所述初始化容量确定所述更新合约类型对应的虚拟机数量;
虚拟机创建模块,被配置为执行创建与所述更新合约类型对应的虚拟机数量个虚拟机;
第二状态设置模块,被配置为执行将所述更新合约类型对应的虚拟机数量个虚拟机的状态设置为空闲状态;
虚拟机池更新模块,被配置为执行基于处于空闲状态的所述更新合约类型对应的虚拟机数量个虚拟机,更新所述虚拟机池。
在一个可选的实施例中,如图9所示,所述装置还包括:
第三状态设置模块860,被配置为执行当所述目标虚拟机运行完所述目标智能合约时,将所述目标虚拟机的状态设置为空闲状态;
初始化设置模块870,被配置为执行对所述目标虚拟机进行初始化设置。
在一个可选的实施例中,所述运行请求还包括合约接口信息和合约标识信息;所述智能合约运行模块850具体被配置为执行控制处于工作状态的所述目标虚拟机加载所述合约标识信息对应的合约代码,以使所述目标虚拟机根据所述合约接口信息执行所述合约代码。
所述的装置实施例中的装置与方法实施例基于同样的申请构思。
本申请实施例提供了一种智能合约运行服务器,该智能合约运行服务器包括处理器和存储器,该存储器中存储有至少一条指令、或至少一段程序,该至少一条指令、或该至少一段程序由该处理器加载并执行以实现如上述方法实施例所提供的智能合约运行方法。
存储器可用于存储软件程序以及模块,处理器通过运行存储在存储器的软件程序以及模块,从而执行各种功能应用以及数据处理。存储器可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作***、功能所需的应用程序等;存储数据区可存储根据所述设备的使用所创建的数据等。此外,存储器可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。相应地,存储器还可以包括存储器控制器,以提供处理器对存储器的访问。
本申请实施例所提供的方法实施例可以在移动终端、计算机终端、服务器或者类似的运算装置中执行。以运行在服务器上为例,图10是本申请实施例提供的一种实现智能合约运行方法的服务器的硬件结构框图。如图10所示,该服务器1000可因配置或性能不同而产生比较大的差异,可以包括一个或一个以***处理器(Central Processing Units,CPU)1010(处理器1010可以包括但不限于微处理器MCU或可编程逻辑器件FPGA等的处理装置)、用于存储数据的存储器1030,一个或一个以上存储应用程序1023或数据1022的存储介质1020(例如一个或一个以上海量存储设备)。其中,存储器1030和存储介质1020可以是短暂存储或持久存储。存储在存储介质1020的程序可以包括一个或一个以上模块,每个模块可以包括对服务器中的一系列指令操作。更进一步地,中央处理器1010可以设置为与存储介质1020通信,在服务器1000上执行存储介质1020中的一系列指令操作。服务器1000还可以包括一个或一个以上电源1060,一个或一个以上有线或无线网络接口1050,一个或一个以上输入输出接口1040,和/或,一个或一个以上操作***1021,例如Windows ServerTM,MacOS XTM,UnixTM,LinuxTM,FreeBSDTM等等。
输入输出接口1040可以用于经由一个网络接收或者发送数据。上述的网络具体实例可包括服务器1000的通信供应商提供的无线网络。在一个实例中,输入输出接口1040包括一个网络适配器(Network Interface Controller,NIC),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实例中,输入输出接口1040可以为射频(RadioFrequency,RF)模块,其用于通过无线方式与互联网进行通讯。
本领域普通技术人员可以理解,图10所示的结构仅为示意,其并不对上述电子装置的结构造成限定。例如,服务器1000还可包括比图10中所示更多或者更少的组件,或者具有与图10所示不同的配置。
本申请的实施例还提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述各种可选实现方式中提供的方法。
本申请的实施例还提供了一种存储介质,所述存储介质可设置于设备之中以保存用于实现方法实施例中一种智能合约运行方法相关的至少一条指令、或至少一段程序,该至少一条指令或该至少一段程序由该处理器加载并执行以实现上述方法实施例提供的智能合约运行方法。
可选地,在本实施例中,上述存储介质可以位于计算机网络的多个网络服务器中的至少一个网络服务器。可选地,在本实施例中,上述存储介质可以包括但不限于:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,RandomAccess Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
由上述本申请提供的智能合约运行方法、装置、服务器或存储介质的实施例可见,本申请中通过预先构建虚拟机池,在接收到目标智能合约的运行请求时,可以直接选取与该目标智能合约的目标合约类型对应的处于空闲状态的目标虚拟机来进行目标智能合约的运行,可以实现虚拟机的有效复用,大大节约后续智能合约运行时的***开销,提升智能合约的运行效率,进而提升整个区块链网络的吞吐量。
需要说明的是:上述本申请实施例先后顺序仅仅为了描述,不代表实施例的优劣。且上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置、设置、存储介质和服务器实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指示相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本申请的较佳实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
Claims (10)
1.一种智能合约运行方法,其特征在于,所述方法包括:
接收目标智能合约的运行请求,所述运行请求包括所述目标智能合约的目标合约类型;
从预先构建的虚拟机池中确定处于空闲状态的初选虚拟机;
从所述初选虚拟机中选取与所述目标合约类型对应的目标虚拟机;
将所述目标虚拟机的状态设置为工作状态;
利用处于工作状态的所述目标虚拟机运行所述目标智能合约。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
生成预设容量的空虚拟机池,所述预设容量表征所述空虚拟机池容纳虚拟机的数量上限;
确定初始化容量,所述初始化容量小于等于所述预设容量;
在所述空虚拟机池中,创建所述初始化容量个空闲状态的虚拟机,得到所述虚拟机池。
3.根据权利要求2所述的方法,其特征在于,所述确定初始化容量包括:
确定部署的智能合约的合约类型;
当所述合约类型包括至少两种合约类型时,确定每个合约类型的智能合约数量;
根据所述每个合约类型的智能合约数量,设置所述每个合约类型对应的虚拟机数量;
将所述至少两种的合约类型对应的虚拟机数量之和,作为所述初始化容量。
4.根据权利要求3所述的方法,其特征在于,所述在所述空虚拟机池中,创建所述初始化容量个空闲状态的虚拟机,得到所述虚拟机池包括:
为所述每个合约类型的智能合约创建对应的虚拟机数量个对应类型的虚拟机;
将创建的虚拟机的状态设置为空闲状态,得到所述初始化容量个空闲状态的虚拟机;
在所述空虚拟机池中,添加所述初始化容量个空闲状态的虚拟机,得到所述虚拟机池。
5.根据权利要求2所述的方法,其特征在于,所述方法还包括:
响应于智能合约更新指令,确定更新的智能合约的更新合约类型;
当所述虚拟机池中不存在与所述更新合约类型相匹配的空闲状态的虚拟机时,根据所述预设容量和所述初始化容量确定所述更新合约类型对应的虚拟机数量;
创建与所述更新合约类型对应的虚拟机数量个虚拟机;
将所述更新合约类型对应的虚拟机数量个虚拟机的状态设置为空闲状态;
基于处于空闲状态的所述更新合约类型对应的虚拟机数量个虚拟机,更新所述虚拟机池。
6.根据权利要求1所述的方法,其特征在于,所述方法还包括:
当所述目标虚拟机运行完所述目标智能合约时,将所述目标虚拟机的状态设置为空闲状态;
对所述目标虚拟机进行初始化设置。
7.根据权利要求1至6任一所述的方法,其特征在于,所述运行请求还包括合约接口信息和合约标识信息;所述利用处于工作状态的所述目标虚拟机运行所述目标智能合约包括:
控制处于工作状态的所述目标虚拟机加载所述合约标识信息对应的合约代码,以使所述目标虚拟机根据所述合约接口信息执行所述合约代码。
8.一种智能合约运行装置,其特征在于,所述装置包括:
运行请求接收模块,被配置为执行接收目标智能合约的运行请求,所述运行请求包括所述目标智能合约的目标合约类型;
初选虚拟机确定模块,被配置为执行从预先构建的虚拟机池中确定处于空闲状态的初选虚拟机;
目标虚拟机确定模块,被配置为执行从所述初选虚拟机中选取与所述目标合约类型对应的目标虚拟机;
第一状态设置模块,被配置为执行将所述目标虚拟机的状态设置为工作状态;
智能合约运行模块,被配置为执行利用处于工作状态的所述目标虚拟机运行所述目标智能合约。
9.一种智能合约运行设备,其特征在于,所述设备包括处理器和存储器,所述存储器中存储有至少一条指令或至少一段程序、所述至少一条指令或所述至少一段程序由所述处理器加载并执行以实现如权利要求1至7任一所述的智能合约运行方法。
10.一种计算机可读存储介质,其特征在于,所述存储介质中存储有至少一条指令或至少一段程序,所述至少一条指令或所述至少一段程序由处理器加载并执行以实现如权利要求1至7任一所述的智能合约运行方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110018109.8A CN112685136A (zh) | 2021-01-07 | 2021-01-07 | 一种智能合约运行方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110018109.8A CN112685136A (zh) | 2021-01-07 | 2021-01-07 | 一种智能合约运行方法、装置、设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112685136A true CN112685136A (zh) | 2021-04-20 |
Family
ID=75456239
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110018109.8A Pending CN112685136A (zh) | 2021-01-07 | 2021-01-07 | 一种智能合约运行方法、装置、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112685136A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115174589A (zh) * | 2022-05-20 | 2022-10-11 | 网易(杭州)网络有限公司 | 区块链虚拟机的选择方法、装置、电子设备及存储介质 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104202419A (zh) * | 2014-09-18 | 2014-12-10 | 温武少 | 一种云计算***动态分配虚拟机的方法 |
CN106815060A (zh) * | 2017-01-19 | 2017-06-09 | 携程旅游网络技术(上海)有限公司 | 虚拟机分配方法及*** |
CN109241359A (zh) * | 2018-08-18 | 2019-01-18 | 深圳市网心科技有限公司 | 区块链节点设备、区块链***、区块数据处理***和方法 |
CN109460283A (zh) * | 2018-10-24 | 2019-03-12 | 南京米好信息安全有限公司 | 一种云计算环境下虚拟机的分配方法 |
CN110297689A (zh) * | 2019-05-06 | 2019-10-01 | 百度在线网络技术(北京)有限公司 | 智能合约执行方法、装置、设备及介质 |
CN111033468A (zh) * | 2019-03-26 | 2020-04-17 | 阿里巴巴集团控股有限公司 | 实施不同类型的区块链合约的***和方法 |
CN111736954A (zh) * | 2020-06-24 | 2020-10-02 | 陈鹏 | 多智能合约虚拟机实现方法、多智能合约虚拟机及*** |
-
2021
- 2021-01-07 CN CN202110018109.8A patent/CN112685136A/zh active Pending
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104202419A (zh) * | 2014-09-18 | 2014-12-10 | 温武少 | 一种云计算***动态分配虚拟机的方法 |
CN106815060A (zh) * | 2017-01-19 | 2017-06-09 | 携程旅游网络技术(上海)有限公司 | 虚拟机分配方法及*** |
CN109241359A (zh) * | 2018-08-18 | 2019-01-18 | 深圳市网心科技有限公司 | 区块链节点设备、区块链***、区块数据处理***和方法 |
CN109460283A (zh) * | 2018-10-24 | 2019-03-12 | 南京米好信息安全有限公司 | 一种云计算环境下虚拟机的分配方法 |
CN111033468A (zh) * | 2019-03-26 | 2020-04-17 | 阿里巴巴集团控股有限公司 | 实施不同类型的区块链合约的***和方法 |
CN110297689A (zh) * | 2019-05-06 | 2019-10-01 | 百度在线网络技术(北京)有限公司 | 智能合约执行方法、装置、设备及介质 |
CN111736954A (zh) * | 2020-06-24 | 2020-10-02 | 陈鹏 | 多智能合约虚拟机实现方法、多智能合约虚拟机及*** |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115174589A (zh) * | 2022-05-20 | 2022-10-11 | 网易(杭州)网络有限公司 | 区块链虚拟机的选择方法、装置、电子设备及存储介质 |
CN115174589B (zh) * | 2022-05-20 | 2023-11-03 | 网易(杭州)网络有限公司 | 区块链虚拟机的选择方法、装置、电子设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111182025B (zh) | 一种报文处理方法、装置、服务器及存储介质 | |
CN108305072B (zh) | 部署区块链网络的方法、设备和计算机存储介质 | |
CN112527912B (zh) | 基于区块链网络的数据处理方法、装置及计算机设备 | |
CN110838065A (zh) | 一种交易数据处理方法及装置 | |
CN110673938B (zh) | 任务处理方法、***、服务器及存储介质 | |
CN111736872A (zh) | 灰度发布升级方法、装置、计算机***及可读存储介质 | |
CN113110864B (zh) | 应用程序更新方法、装置及存储介质 | |
CN112288423A (zh) | 一种分布式框架的聚合支付方法和*** | |
CN112099917B (zh) | 调控***容器化应用运行管理方法、***、设备及介质 | |
CN104410699A (zh) | 一种开放式云计算资源管理方法及*** | |
CN111639309A (zh) | 一种数据处理方法、装置、节点设备及存储介质 | |
CN112256989A (zh) | 基于离线包的页面加载方法、装置、终端设备及存储介质 | |
CN111651121A (zh) | 数据逻辑计算方法、装置、电子设备及存储介质 | |
CN115129423A (zh) | 资源管理方法、装置、设备及存储介质 | |
De et al. | BCoT: introduction to blockchain-based internet of things for industry 5.0 | |
CN112685136A (zh) | 一种智能合约运行方法、装置、设备及存储介质 | |
CN116737393B (zh) | 资源部署方法、装置和存储介质及电子设备 | |
CN113129002A (zh) | 一种数据处理方法以及设备 | |
JP2010244358A (ja) | シンクライアントマスタの書換システム、シンクライアントマスタの書換方法、およびシンクライアント | |
CN111951112A (zh) | 基于区块链的智能合约执行方法、终端设备和存储介质 | |
CN110290206A (zh) | 一种用于网吧环境的分布式计算***及方法 | |
CN112988852B (zh) | 基于区块链的数据管理方法、设备以及介质 | |
Kaur et al. | Docker and its features | |
CN112564979A (zh) | 构建任务的执行方法、装置、计算机设备和存储介质 | |
CN115701078A (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 | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 40042480 Country of ref document: HK |