CN108830720A - 智能合约运行方法、装置、系统和计算机可读存储介质 - Google Patents
智能合约运行方法、装置、系统和计算机可读存储介质 Download PDFInfo
- Publication number
- CN108830720A CN108830720A CN201810640008.2A CN201810640008A CN108830720A CN 108830720 A CN108830720 A CN 108830720A CN 201810640008 A CN201810640008 A CN 201810640008A CN 108830720 A CN108830720 A CN 108830720A
- Authority
- CN
- China
- Prior art keywords
- intelligent contract
- block chain
- module
- contract
- data
- 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.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q40/00—Finance; Insurance; Tax strategies; Processing of corporate or income taxes
- G06Q40/04—Trading; Exchange, e.g. stocks, commodities, derivatives or currency exchange
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1097—Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/2866—Architectures; Arrangements
- H04L67/30—Profiles
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/56—Provisioning of proxy services
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Business, Economics & Management (AREA)
- Software Systems (AREA)
- General Physics & Mathematics (AREA)
- Accounting & Taxation (AREA)
- Finance (AREA)
- Marketing (AREA)
- General Business, Economics & Management (AREA)
- Technology Law (AREA)
- Strategic Management (AREA)
- Economics (AREA)
- Development Economics (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明公开了一种智能合约运行方法、装置、系统和计算机可读存储介质,涉及计算机技术领域。智能合约运行方法包括:从区块链中读取智能合约的数据,其中,智能合约的数据包括智能合约代码;从智能合约的数据中获取智能合约代码的参数信息;根据参数信息构建智能合约的脚本;运行脚本以采用智能合约代码构建和启动智能合约模块,以便区块链核心模块与启动的智能合约模块通过区块链节点的通信代理层交换智能合约的执行数据。本发明的实施例可以根据智能合约的代码构建智能合约的脚本,并通过启动脚本来运行智能合约,使得在区块链节点部署在弹性云的环境中时,也能够执行和启动智能合约,提高了智能合约的通用性。
Description
技术领域
本发明涉及计算机技术领域,特别涉及一种智能合约运行方法、装置、系统和计算机可读存储介质。
背景技术
区块链应用是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用。智能合约是运行在区块链之上的、和业务逻辑紧密相关的业务逻辑程序。
在相关技术中,一般使用容器(Docker)实现智能合约,以为智能合约提供一个完整、成熟的运行环境,方便区块链节点调用和执行智能合约。Docker是一个开源的应用容器引擎。开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux操作系统的机器上,也可以实现虚拟化。
区块链节点可以部署在物理机上。但是,如果为了将智能合约的业务使用Docker来支撑,将区块链节点都部署在单个的物理机上,成本太高,使得运营、迁移、维护的工作量太大。随着公有云或者私有云等弹性云业务的发展,很多区块链的业务系统都部署在弹性云上。弹性云主要使用Docker技术来实现。
发明内容
发明人对相关技术进行分析后发现,按目前Docker的设计理念,Docker上是无法运行Docker的。因此,将智能合约和区块链节点均使用Docker的技术来实现,即,将采用Docker实现的智能合约运行在Docker上的方案是无法实现的。
本发明实施例所要解决的一个技术问题是:如何在基于弹性云的区块链系统中支持智能合约。
根据本发明一些实施例的第一个方面,提供一种智能合约运行方法,包括:从区块链中读取智能合约的数据,其中,智能合约的数据包括智能合约代码;从智能合约的数据中获取智能合约代码的参数信息;根据参数信息构建智能合约的脚本;运行脚本以采用智能合约代码构建和启动智能合约模块,以便区块链核心模块与启动的智能合约模块通过区块链节点的通信代理层交换智能合约的执行数据。
在一些实施例中,智能合约运行方法还包括:启动的智能合约模块与区块链核心模块通过区块链节点的通信代理层建立连接;启动的智能合约模块通过建立的连接接收区块链核心模块发送的基于网络协议的数据。
在一些实施例中,智能合约运行方法还包括:启动的智能合约模块通过建立的连接向区块链节点发送心跳通知,以便区块链核心模块响应于在预设时间内未收到智能合约模块发送的心跳通知,再次运行智能合约的脚本。
在一些实施例中,智能合约运行方法还包括:启动的智能合约模块与区块链核心模块通过区块链节点的通信代理层交换智能合约的执行数据,执行数据包括智能合约的执行标识,以便区块链核心模块保存智能合约的执行标识以及相应的执行数据。
在一些实施例中,根据参数信息和智能合约的语言类型,构建语言类型对应的智能合约的脚本。
在一些实施例中,从智能合约的数据中获取智能合约代码的编译参数和启动参数;根据编译参数构建智能合约的编译脚本,以及根据启动参数构建智能合约的启动脚本。
在一些实施例中,启动的智能合约模块位于区块链节点的宿主机或者区块链智能合约集群。
根据本发明一些实施例的第二个方面,提供一种智能合约运行装置,包括:智能合约数据读取模块,被配置为从区块链中读取智能合约的数据,其中,智能合约的数据包括智能合约代码;参数信息获取模块,被配置为从智能合约的数据中获取智能合约代码的参数信息;脚本构建模块,被配置为根据参数信息构建智能合约的脚本;脚本运行模块,被配置为运行脚本以采用智能合约代码构建和启动智能合约模块,以便启动的智能合约模块与区块链核心模块通过区块链节点的通信代理层交换智能合约的执行数据。
在一些实施例中,智能合约运行装置还包括启动的智能合约模块,被配置为与区块链核心模块通过区块链节点的通信代理层建立连接,以及通过建立的连接接收区块链核心模块发送的基于网络协议的数据。
在一些实施例中,启动的智能合约模块进一步被配置为通过建立的连接向区块链节点发送心跳通知,以便区块链核心模块响应于在预设时间内未收到智能合约模块发送的心跳通知,再次运行智能合约的脚本。
在一些实施例中,启动的智能合约模块进一步被配置为与区块链核心模块通过区块链节点的通信代理层交换智能合约的执行数据,执行数据包括智能合约的执行标识,以便区块链核心模块保存智能合约的执行标识以及相应的执行数据。
在一些实施例中,脚本构建模块进一步被配置为根据参数信息和智能合约的语言类型,构建语言类型对应的智能合约的脚本。
在一些实施例中,参数信息获取模块进一步被配置为从智能合约的数据中获取智能合约代码的编译参数和启动参数;脚本构建模块进一步被配置为根据编译参数构建智能合约的编译脚本,以及根据启动参数构建智能合约的启动脚本。
在一些实施例中,智能合约运行装置位于区块链节点的宿主机或者区块链智能合约集群。
根据本发明一些实施例的第三个方面,提供一种智能合约运行系统,包括:前述任意一种智能合约运行装置,以及区块链节点的宿主机,宿主机包括区块链核心模块和通信代理层,区块链核心模块被配置为与启动的智能合约模块通过区块链节点的通信代理层交换智能合约的执行数据。
根据本发明一些实施例的第四个方面,提供一种智能合约运行装置,包括:存储器;以及耦接至所述存储器的处理器,所述处理器被配置为基于存储在所述存储器中的指令,执行前述任意一种智能合约运行方法。
根据本发明一些实施例的第五个方面,提供一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现前述任意一种智能合约运行方法。
上述发明中的一些实施例具有如下优点或有益效果:本发明的实施例可以根据智能合约的代码构建智能合约的脚本,并通过启动脚本来运行智能合约,使得在区块链节点部署在弹性云的环境中时,也能够执行和启动智能合约,提高了智能合约的通用性。
通过以下参照附图对本发明的示例性实施例的详细描述,本发明的其它特征及其优点将会变得清楚。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为根据本发明一些实施例的智能合约运行方法的示例性流程图。
图2为根据本发明一些实施例的脚本生成方法的示例性流程图。
图3为根据本发明另一些实施例的智能合约运行方法的示例性流程图。
图4为根据本发明一些实施例的智能合约和区块链核心模块通信方法的示例性流程图。
图5为根据本发明一些实施例的智能合约和区块链核心模块数据交互方法的示例性流程图。
图6为根据本发明又一些实施例的智能合约执行方法的示例性流程图。
图7A和7B为根据本发明一些实施例的智能合约运行系统的示例性结构图。
图8为根据本发明一些实施例的智能合约运行装置的示例性结构图。
图9为根据本发明另一些实施例的智能合约运行装置的示例性结构图。
图10为根据本发明又一些实施例的智能合约运行装置的示例性结构图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。以下对至少一个示例性实施例的描述实际上仅仅是说明性的,决不作为对本发明及其应用或使用的任何限制。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
除非另外具体说明,否则在这些实施例中阐述的部件和步骤的相对布置、数字表达式和数值不限制本发明的范围。
同时,应当明白,为了便于描述,附图中所示出的各个部分的尺寸并不是按照实际的比例关系绘制的。
对于相关领域普通技术人员已知的技术、方法和设备可能不作详细讨论,但在适当情况下,所述技术、方法和设备应当被视为授权说明书的一部分。
在这里示出和讨论的所有示例中,任何具体值应被解释为仅仅是示例性的,而不是作为限制。因此,示例性实施例的其它示例可以具有不同的值。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步讨论。
图1为根据本发明一些实施例的智能合约运行方法的示例性流程图。如图1所示,该实施例的智能合约运行方法包括步骤S102~S110。
在步骤S102中,从区块链中读取智能合约的数据,其中,智能合约的数据包括智能合约代码。
读取到的智能合约数据可以存储在区块链节点的宿主机,也可以是其他设备。宿主机可以是弹性云环境中的云主机,例如可以是Docker等容器。此外,宿主机也可以是物理机。宿主机为区块链节点提供了运行环境。
在一些实施例中,智能合约的数据可以以二进制存储在区块链中。智能合约的数据除了包括智能合约代码以外,还可以包括智能合约的名称、版本号、语言类型、启动参数等等。上述字段中的每一个可以采用预设的格式表示,例如,可以采用“内容的长度+空格+内容”的方式组成。设智能合约的名称定义为trace,则智能合约的名称存储为“5trace”。区块链中存储的智能合约的数据的一个示例可以参考表1。
表1
在步骤S104中,从智能合约的数据中获取智能合约代码的参数信息。在一些实施例中,参数信息可以是编译参数、启动参数等等。
在步骤S106中,根据参数信息构建智能合约的脚本。由于本发明的实施例不采用Docker承载智能合约,因此需要构建智能合约的运行环境。在一些实施例中,可以获取脚本模板,然后将智能合约代码中的参数信息填充到脚本模板中。
在一些实施例中,可以根据参数信息和智能合约的语言类型,构建语言类型对应的智能合约的脚本,例如根据Java、Lua、Python构建不同版本的脚本。在一些实施例中,可以获取语言类型对应的命令模板,例如编译命令、启动命令等等,然后将智能合约代码中的参数信息填充到命令模板中,形成脚本。
构建脚本时,可以由设备自行构建。并且,针对不同的语言,可以提前内置不同类型的脚本模板。从而,智能合约调试运行时,无需开发人员手动参与。
在步骤S108中,运行脚本以构建和启动智能合约模块。在运行脚本后,可以触发执行智能合约的代码,使得智能合约的程序运行起来,即启动智能合约模块。
在步骤S110中,区块链核心模块与启动的智能合约模块通过区块链节点的通信代理层交换智能合约的执行数据。区块链核心模块是指完成区块链核心功能的模块,例如读取、写入区块链中的数据,对区块链中的数据进行校验、计算等操作。
通过上述实施例的方法,可以根据智能合约的代码构建智能合约的脚本,并通过启动脚本来运行智能合约,使得在区块链节点部署在弹性云的环境中时,也能够执行和启动智能合约,提高了智能合约的通用性。
在一些实施例中,智能合约代码的参数信息可以包括编译参数、启动参数等等。下面参考图2描述本发明脚本生成方法的实施例。
图2为根据本发明一些实施例的脚本生成方法的示例性流程图。如图2所示,该实施例的脚本生成方法包括步骤S202~S204。
在步骤S202中,从智能合约的数据中获取智能合约代码的编译参数和启动参数。
在步骤S204中,根据编译参数构建智能合约的编译脚本,以及根据启动参数构建智能合约的启动脚本。从而,可以生成构建智能合约的过程中所需的脚本。
以Java语言为例。对于编译参数,需要组装Javac构建命令,例如:
cd/xxx/xxx/xxx
javac*.java
在上述命令中,“*.java”表示Java文件,“/xxx/xxx/xxx”表示该Java文件所在的路径。在编译构建的过程中,需要检验智能合约代码是否嵌套有目录,若有的话,需要遍历这些目录,拼装好所有的javac编译命令。或者,也可以使用高级编译工具,如maven或者ant等,根据不同的智能合约,组装不同的maven、ant编译脚本。
对于启动参数,构建命令为:
java xx
在上述命令中,“xx”表示智能合约的类名。
从而,本发明实施例提供的方法可以支持多种语言的智能合约。当需要新增一种语言支持时,仅需要对网络通信层以及例如宿主机等智能合约运行装置的待添加语言对应的运行环境、适配逻辑进行修改,改动量较小。
为了增加执行智能合约的灵活性,智能合约模块可以位于宿主机中,也可以位于其他设备中。在一些实施例中,启动的智能合约模块可以位于宿主机或者区块链智能合约集群。区块链智能合约集群指的是可运行在区块链节点之上或者独立运行在其他服务器节点上的一套运行环境,其中区块链智能合约集群的数量和区块链节点的数据可以不一一对应。区块链智能合约集群上可以只运行智能合约部分的逻辑。
相应地,在区块链节点中可以通过设置通信代理层来实现智能合约模块的灵活部署。下面参考图3描述本发明智能合约运行方法的实施例。
图3为根据本发明另一些实施例的智能合约运行方法的示例性流程图。如图3所示,该实施例的智能合约运行方法包括步骤S302~S306。
在步骤S302中,运行智能合约的脚本。脚本的构建过程可以参考前述实施例,这里不再赘述。运行脚本的对象为承载智能合约模块的对象。
在步骤S304中,启动的智能合约模块与区块链核心模块通过区块链节点的通信代理层建立连接。
在步骤S306中,启动的智能合约模块通过建立的连接接收区块链核心模块发送的基于网络协议的数据。网络协议例如可以为GRPC(Google Remote Procedure CallProtocol,谷歌远程过程调用)、HTTP(HyperText Transfer Protocol,超文本传输协议)协议等现有协议,也可以是内部定制的协议,例如自定义的RPC(Remote Procedure CallProtocol,远程过程调用)协议。
智能合约模块运行时,智能合约的主函数(main函数)会进行一些初始化动作,例如包括和宿主机中的区块链核心模块建立可信的通信通道、通知区块链核心模块智能合约已经加载完成等事项。区块链核心模块接收到智能合约发过来的加载完成的消息,标示智能合约已经启动成功。
从而,不论智能合约模块是否与区块链节点位于同一对象上,区块链节点的区块链核心模块都可以基于网络通信的方式、通过通信代理层来与智能合约模块进行数据交互,提高了智能合约模块部署的灵活性。
在智能合约模块与区块链核心模块建立连接后,可以通过心跳通知维持连接。下面参考图4描述本发明智能合约和区块链核心模块通信方法的实施例。
图4为根据本发明一些实施例的智能合约和区块链核心模块通信方法的示例性流程图。如图4所示,该实施例的智能合约和区块链核心模块通信方法包括步骤S402~S406。
在步骤S402中,启动的智能合约模块与区块链核心模块通过区块链节点的通信代理层建立连接。
在步骤S404中,启动的智能合约模块通过建立的连接向区块链节点发送心跳通知。
在步骤S406中,区块链核心模块响应于在预设时间内未收到智能合约模块发送的心跳通知,再次运行智能合约的脚本。
从而,可以在检测到智能合约不再存活时再次启动智能合约,提高了智能合约的可用性。
在一些实施例中,同一个宿主机上可能会同时执行多个不同智能合约的代码,并且同一个智能合约的代码也可能存在在短时间内多次执行的可能性。为了防止智能合约的执行结果或执行状态产生交叉、篡改的情况,可以在每次开始执行智能合约时定义一个唯一的请求标识。下面参考图5描述本发明智能合约和区块链核心模块数据交互方法的实施例。
图5为根据本发明一些实施例的智能合约和区块链核心模块数据交互方法的示例性流程图。如图5所示,该实施例的智能合约和区块链核心模块数据交互方法包括步骤S502~S504。
在步骤S502中,启动的智能合约模块与区块链核心模块通过区块链节点的通信代理层交换智能合约的执行数据,执行数据包括智能合约的执行标识。
在步骤S504中,区块链核心模块保存智能合约的执行标识以及相应的执行数据。
在区块链核心模块和智能合约模块交互数据、记录状态的时候,均添加唯一的执行标识。在一些实施例中,当智能合约的执行时,宿主机上的区块链核心模块将相同的执行标识涉及的数据都记录一个哈希(Map)类型的结构中,待智能合约执行结束后,此核心模块将此执行标识对应的Map类型的结构以一定的格式保存下来,可以作为本次智能合约执行后的最终结果。
从而,可以避免多个智能合约同时执行或者同一智能合约在短时间内多次执行造成的数据混淆,提高了执行数据获取的准确性。
下面参考图6描述本发明智能合约执行方法的实施例。
图6为根据本发明又一些实施例的智能合约执行方法的示例性流程图。如图6所示,该实施例的智能合约执行方法包括步骤S602~S620。
在步骤S602中,区块链节点检查自己的内部状态,检查此智能合约在系统中是否已经启动。例如,可以通过版本号、智能合约名称来检查相应智能合约的状态。
在步骤S604中,响应于智能合约未启动,从区块链中读取智能合约的二进制源代码数据,以及版本号、智能合约名称、智能合约语言类型等相关信息。
在步骤S606中,将智能合约的代码以一定的命名格式和文件扩展名存储在宿主机的一个固定目录中。
在步骤S608中,根据智能合约的语言的类型构建不同版本的智能合约代码的构建编译参数和启动参数,将构建编译参数和启动参数也以脚本文件的形式存储下来。
在步骤S610中,分别运行构建编译参数脚本和运行启动脚本启动此智能合约。
在步骤S612中,智能合约运行时,智能合约模块和宿主机中的区块链核心模块建立可信的通信通道,并通知区块链核心模块此智能合约已经加载完成等事项。
在步骤S614中,区块链核心模块接收到智能合约发过来的加载完成的消息,标示智能合约已经启动成功。
在步骤S616中,区块链核心模块通过通信通道向已启动的智能合约模块发送合约执行的命令。
在步骤S618中,智能合约模块通过通信通道接收到命令后,开始执行智能合约业务逻辑。在需要和区块链核心模块交互时,再通过通信通道和区块链核心模块进行交互。交互的过程可能会存在多次。
在步骤S620中,响应于智能合约执行完毕,区块链核心模块收到智能合约模块发送的执行成功的消息,收集本次执行智能合约的过程中所有的执行状态。
下面参考图7A和7B描述本发明智能合约运行系统的实施例。
图7A为根据本发明一些实施例的智能合约运行系统的示例性结构图。如图7A所示,该实施例的智能合约运行系统70包括智能合约运行装置710以及区块链节点的宿主机720,智能合约运行装置710不位于宿主机720中。宿主机720包括区块链核心模块7210和通信代理层7220,区块链核心模块7210被配置为与启动的智能合约模块通过区块链节点的通信代理层7220交换智能合约的执行数据。
在一些实施例中,智能合约运行装置710也可以位于宿主机720中,如图7B所示。
下面参考图8描述本发明智能合约运行装置的实施例。
图8为根据本发明一些实施例的智能合约运行装置的示例性结构图。如图8所示,该实施例的智能合约运行装置800包括:智能合约数据读取模块8010,被配置为从区块链中读取智能合约的数据,其中,智能合约的数据包括智能合约代码;参数信息获取模块8020,被配置为从智能合约的数据中获取智能合约代码的参数信息;脚本构建模块8030,被配置为根据参数信息构建智能合约的脚本;脚本运行模块8040,被配置为运行脚本以采用智能合约代码构建和启动智能合约模块,以便启动的智能合约模块与区块链核心模块通过区块链节点的通信代理层交换智能合约的执行数据。
在一些实施例中,智能合约运行装置800还包括启动的智能合约模块8050,被配置为与区块链核心模块通过区块链节点的通信代理层建立连接,以及通过建立的连接接收区块链核心模块发送的基于网络协议的数据。
在一些实施例中,启动的智能合约模块8050进一步被配置为通过建立的连接向区块链节点发送心跳通知,以便区块链核心模块响应于在预设时间内未收到智能合约模块发送的心跳通知,再次运行智能合约的脚本。
在一些实施例中,启动的智能合约模块8050进一步被配置为与区块链核心模块通过区块链节点的通信代理层交换智能合约的执行数据,执行数据包括智能合约的执行标识,以便区块链核心模块保存智能合约的执行标识以及相应的执行数据。
在一些实施例中,脚本构建模块8030进一步被配置为根据参数信息和智能合约的语言类型,构建语言类型对应的智能合约的脚本。
在一些实施例中,参数信息获取模块8020进一步被配置为从智能合约的数据中获取智能合约代码的编译参数和启动参数;脚本构建模块8030进一步被配置为根据编译参数构建智能合约的编译脚本,以及根据启动参数构建智能合约的启动脚本。
在一些实施例中,智能合约运行装置800位于区块链节点的宿主机或者区块链智能合约集群。
图9为根据本发明另一些实施例的智能合约运行装置的示例性结构图。如图9所示,该实施例的智能合约运行装置900包括:存储器910以及耦接至该存储器910的处理器920,处理器920被配置为基于存储在存储器910中的指令,执行前述任意一个实施例中的智能合约运行方法。
其中,存储器910例如可以包括系统存储器、固定非易失性存储介质等。系统存储器例如存储有操作系统、应用程序、引导装载程序(Boot Loader)以及其他程序等。
图10为根据本发明又一些实施例的智能合约运行装置的示例性结构图。如图10所示,该实施例的智能合约运行装置1000包括:存储器1010以及处理器1020,还可以包括输入输出接口1030、网络接口1040、存储接口1050等。这些接口1030,1040,1050以及存储器1010和处理器1020之间例如可以通过总线1060连接。其中,输入输出接口1030为显示器、鼠标、键盘、触摸屏等输入输出设备提供连接接口。网络接口1040为各种联网设备提供连接接口。存储接口1050为SD卡、U盘等外置存储设备提供连接接口。
本发明的实施例还提供一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现前述任意一种智能合约运行方法。
本领域内的技术人员应当明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用非瞬时性存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解为可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (17)
1.一种智能合约运行方法,包括:
从区块链中读取智能合约的数据,其中,所述智能合约的数据包括智能合约代码;
从所述智能合约的数据中获取智能合约代码的参数信息;
根据所述参数信息构建智能合约的脚本;
运行所述脚本以采用智能合约代码构建和启动智能合约模块,以便区块链核心模块与启动的智能合约模块通过区块链节点的通信代理层交换智能合约的执行数据。
2.根据权利要求1所述的智能合约运行方法,还包括:
启动的智能合约模块与区块链核心模块通过区块链节点的通信代理层建立连接;
启动的智能合约模块通过建立的连接接收区块链核心模块发送的基于网络协议的数据。
3.根据权利要求2所述的智能合约运行方法,还包括:
启动的智能合约模块通过建立的连接向区块链节点发送心跳通知,以便区块链核心模块响应于在预设时间内未收到智能合约模块发送的心跳通知,再次运行所述智能合约的脚本。
4.根据权利要求1所述的智能合约运行方法,还包括:
启动的智能合约模块与区块链核心模块通过区块链节点的通信代理层交换智能合约的执行数据,所述执行数据包括智能合约的执行标识,以便区块链核心模块保存所述智能合约的执行标识以及相应的执行数据。
5.根据权利要求1~4中任一项所述的智能合约运行方法,其中,根据所述参数信息和智能合约的语言类型,构建所述语言类型对应的智能合约的脚本。
6.根据权利要求1~4中任一项所述的智能合约运行方法,其中,
从所述智能合约的数据中获取智能合约代码的编译参数和启动参数;
根据所述编译参数构建智能合约的编译脚本,以及根据启动参数构建智能合约的启动脚本。
7.根据权利要求1~4中任一项所述的智能合约运行方法,其中,所述启动的智能合约模块位于区块链节点的宿主机或者区块链智能合约集群。
8.一种智能合约运行装置,包括:
智能合约数据读取模块,被配置为从区块链中读取智能合约的数据,其中,所述智能合约的数据包括智能合约代码;
参数信息获取模块,被配置为从所述智能合约的数据中获取智能合约代码的参数信息;
脚本构建模块,被配置为根据所述参数信息构建智能合约的脚本;
脚本运行模块,被配置为运行所述脚本以采用智能合约代码构建和启动智能合约模块,以便启动的智能合约模块与区块链核心模块通过区块链节点的通信代理层交换智能合约的执行数据。
9.根据权利要求8所述的智能合约运行装置,还包括:
启动的智能合约模块,被配置为与区块链核心模块通过区块链节点的通信代理层建立连接,以及通过建立的连接接收区块链核心模块发送的基于网络协议的数据。
10.根据权利要求9所述的智能合约运行装置,其中,所述启动的智能合约模块进一步被配置为通过建立的连接向区块链节点发送心跳通知,以便区块链核心模块响应于在预设时间内未收到智能合约模块发送的心跳通知,再次运行所述智能合约的脚本。
11.根据权利要求8所述的智能合约运行装置,其中,所述启动的智能合约模块进一步被配置为与区块链核心模块通过区块链节点的通信代理层交换智能合约的执行数据,所述执行数据包括智能合约的执行标识,以便区块链核心模块保存所述智能合约的执行标识以及相应的执行数据。
12.根据权利要求8~11中任一项所述的智能合约运行装置,其中,所述脚本构建模块进一步被配置为根据所述参数信息和智能合约的语言类型,构建所述语言类型对应的智能合约的脚本。
13.根据权利要求8~11中任一项所述的智能合约运行装置,其中,
所述参数信息获取模块进一步被配置为从所述智能合约的数据中获取智能合约代码的编译参数和启动参数;
所述脚本构建模块进一步被配置为根据所述编译参数构建智能合约的编译脚本,以及根据启动参数构建智能合约的启动脚本。
14.根据权利要求8~11中任一项所述的智能合约运行装置,其中,所述智能合约运行装置位于区块链节点的宿主机或者区块链智能合约集群。
15.一种智能合约运行系统,包括:
权利要求8~14中任一项所述的智能合约运行装置,以及
区块链节点的宿主机,所述宿主机包括区块链核心模块和通信代理层,所述区块链核心模块被配置为与启动的智能合约模块通过区块链节点的通信代理层交换智能合约的执行数据。
16.一种智能合约运行装置,包括:
存储器;以及
耦接至所述存储器的处理器,所述处理器被配置为基于存储在所述存储器中的指令,执行如权利要求1~7中任一项所述的智能合约运行方法。
17.一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现权利要求1~7中任一项所述的智能合约运行方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810640008.2A CN108830720B (zh) | 2018-06-21 | 2018-06-21 | 智能合约运行方法、装置、系统和计算机可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810640008.2A CN108830720B (zh) | 2018-06-21 | 2018-06-21 | 智能合约运行方法、装置、系统和计算机可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108830720A true CN108830720A (zh) | 2018-11-16 |
CN108830720B CN108830720B (zh) | 2021-04-30 |
Family
ID=64142941
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810640008.2A Active CN108830720B (zh) | 2018-06-21 | 2018-06-21 | 智能合约运行方法、装置、系统和计算机可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108830720B (zh) |
Cited By (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109683867A (zh) * | 2018-12-27 | 2019-04-26 | 石更箭数据科技(上海)有限公司 | 一种对接区块链的方法及其装置、介质、终端 |
CN109976871A (zh) * | 2018-12-28 | 2019-07-05 | 无锡井通网络科技有限公司 | 智能合约部署方法、装置、电子设备及存储介质 |
CN110020542A (zh) * | 2018-12-20 | 2019-07-16 | 阿里巴巴集团控股有限公司 | 数据读写方法及装置、电子设备 |
CN110249307A (zh) * | 2018-12-29 | 2019-09-17 | 阿里巴巴集团控股有限公司 | 用于在区块链上执行原生合约的系统和方法 |
CN110489429A (zh) * | 2019-08-22 | 2019-11-22 | 腾讯科技(深圳)有限公司 | 数据获取方法、装置、计算机可读存储介质和计算机设备 |
CN110516007A (zh) * | 2019-08-30 | 2019-11-29 | 北京百度网讯科技有限公司 | 一种区块链网络的部署控制方法、装置、设备和介质 |
CN110602227A (zh) * | 2019-09-19 | 2019-12-20 | 腾讯科技(深圳)有限公司 | 一种智能合约管理的方法以及相关装置 |
WO2020011288A2 (en) | 2019-10-16 | 2020-01-16 | Alipay (Hangzhou) Information Technology Co., Ltd. | Implementing a blockchain-based web service |
CN111159301A (zh) * | 2019-12-31 | 2020-05-15 | 中国银行股份有限公司 | 一种基于智能合约的数据创建方法、装置、设备及存储介质 |
CN111273970A (zh) * | 2020-01-21 | 2020-06-12 | 腾讯科技(深圳)有限公司 | 智能合约的调用方法、装置、系统、介质及电子设备 |
CN111324396A (zh) * | 2020-03-19 | 2020-06-23 | 深圳市网心科技有限公司 | 一种区块链智能合约执行方法、装置及设备 |
CN111782305A (zh) * | 2020-07-21 | 2020-10-16 | 江苏荣泽信息科技股份有限公司 | 一种高效安全智能合约运行环境的方法 |
CN112363804A (zh) * | 2020-11-16 | 2021-02-12 | 杭州复杂美科技有限公司 | 区块链jvm应用方法、设备和存储介质 |
CN113220704A (zh) * | 2021-07-01 | 2021-08-06 | 支付宝(杭州)信息技术有限公司 | 在区块链中部署、查询和执行智能合约的方法及装置 |
CN116016255A (zh) * | 2022-12-29 | 2023-04-25 | 天津大学 | 一种基于动态代理和智能合约的通用区块链性能评测方法 |
US11733991B2 (en) | 2019-08-29 | 2023-08-22 | Tencent Technology (Shenzhen) Company Limited | Data processing method based on intelligent contract, device, and storage medium |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102799437A (zh) * | 2012-07-18 | 2012-11-28 | 清华大学 | 一种编译脚本自动生成方法和自动生成装置 |
CN106598549A (zh) * | 2016-12-08 | 2017-04-26 | 天津米游科技有限公司 | 一种基于区块链的智能合约系统及实现方法 |
WO2017161417A1 (en) * | 2016-03-21 | 2017-09-28 | National Ict Australia Limited | Business process execution on a blockchain platform |
-
2018
- 2018-06-21 CN CN201810640008.2A patent/CN108830720B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102799437A (zh) * | 2012-07-18 | 2012-11-28 | 清华大学 | 一种编译脚本自动生成方法和自动生成装置 |
WO2017161417A1 (en) * | 2016-03-21 | 2017-09-28 | National Ict Australia Limited | Business process execution on a blockchain platform |
CN106598549A (zh) * | 2016-12-08 | 2017-04-26 | 天津米游科技有限公司 | 一种基于区块链的智能合约系统及实现方法 |
Cited By (30)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11200226B2 (en) | 2018-12-20 | 2021-12-14 | Advanced New Technologies Co., Ltd. | Data read and write method and apparatus, and electronic device |
CN110020542A (zh) * | 2018-12-20 | 2019-07-16 | 阿里巴巴集团控股有限公司 | 数据读写方法及装置、电子设备 |
CN110020542B (zh) * | 2018-12-20 | 2020-05-19 | 阿里巴巴集团控股有限公司 | 数据读写方法及装置、电子设备 |
CN109683867A (zh) * | 2018-12-27 | 2019-04-26 | 石更箭数据科技(上海)有限公司 | 一种对接区块链的方法及其装置、介质、终端 |
CN109976871A (zh) * | 2018-12-28 | 2019-07-05 | 无锡井通网络科技有限公司 | 智能合约部署方法、装置、电子设备及存储介质 |
CN109976871B (zh) * | 2018-12-28 | 2023-07-07 | 无锡井通网络科技有限公司 | 智能合约部署方法、装置、电子设备及存储介质 |
CN110249307A (zh) * | 2018-12-29 | 2019-09-17 | 阿里巴巴集团控股有限公司 | 用于在区块链上执行原生合约的系统和方法 |
CN110249307B (zh) * | 2018-12-29 | 2022-05-31 | 创新先进技术有限公司 | 用于在区块链上执行原生合约的系统和方法 |
CN110489429A (zh) * | 2019-08-22 | 2019-11-22 | 腾讯科技(深圳)有限公司 | 数据获取方法、装置、计算机可读存储介质和计算机设备 |
US11733991B2 (en) | 2019-08-29 | 2023-08-22 | Tencent Technology (Shenzhen) Company Limited | Data processing method based on intelligent contract, device, and storage medium |
CN110516007A (zh) * | 2019-08-30 | 2019-11-29 | 北京百度网讯科技有限公司 | 一种区块链网络的部署控制方法、装置、设备和介质 |
CN110516007B (zh) * | 2019-08-30 | 2022-07-29 | 北京百度网讯科技有限公司 | 一种区块链网络的部署控制方法、装置、设备和介质 |
CN110602227A (zh) * | 2019-09-19 | 2019-12-20 | 腾讯科技(深圳)有限公司 | 一种智能合约管理的方法以及相关装置 |
WO2020011288A3 (en) * | 2019-10-16 | 2020-08-06 | Alipay (Hangzhou) Information Technology Co., Ltd. | Implementing a blockchain-based web service |
AU2019302940B2 (en) * | 2019-10-16 | 2021-10-21 | Alipay (Hangzhou) Information Technology Co., Ltd. | Implementing a blockchain-based web service |
EP3769490A4 (en) * | 2019-10-16 | 2021-02-17 | Alipay (Hangzhou) Information Technology Co., Ltd. | IMPLEMENTATION OF A WEB SERVICE BASED ON A CHAIN OF BLOCKS |
US10986162B2 (en) | 2019-10-16 | 2021-04-20 | Alipay (Hangzhou) Information Technology Co., Ltd. | Implementing a blockchain-based web service |
WO2020011288A2 (en) | 2019-10-16 | 2020-01-16 | Alipay (Hangzhou) Information Technology Co., Ltd. | Implementing a blockchain-based web service |
CN111159301A (zh) * | 2019-12-31 | 2020-05-15 | 中国银行股份有限公司 | 一种基于智能合约的数据创建方法、装置、设备及存储介质 |
CN111273970B (zh) * | 2020-01-21 | 2022-05-06 | 腾讯科技(深圳)有限公司 | 智能合约的调用方法、装置、系统、介质及电子设备 |
CN111273970A (zh) * | 2020-01-21 | 2020-06-12 | 腾讯科技(深圳)有限公司 | 智能合约的调用方法、装置、系统、介质及电子设备 |
CN111324396A (zh) * | 2020-03-19 | 2020-06-23 | 深圳市网心科技有限公司 | 一种区块链智能合约执行方法、装置及设备 |
CN111324396B (zh) * | 2020-03-19 | 2023-09-15 | 深圳市迅雷网络技术有限公司 | 一种区块链智能合约执行方法、装置及设备 |
CN111782305B (zh) * | 2020-07-21 | 2021-01-19 | 江苏荣泽信息科技股份有限公司 | 一种高效安全智能合约运行环境的方法 |
CN111782305A (zh) * | 2020-07-21 | 2020-10-16 | 江苏荣泽信息科技股份有限公司 | 一种高效安全智能合约运行环境的方法 |
CN112363804A (zh) * | 2020-11-16 | 2021-02-12 | 杭州复杂美科技有限公司 | 区块链jvm应用方法、设备和存储介质 |
CN112363804B (zh) * | 2020-11-16 | 2024-01-26 | 北京差旅天下网络科技有限责任公司 | 区块链jvm应用方法、设备和存储介质 |
CN113220704A (zh) * | 2021-07-01 | 2021-08-06 | 支付宝(杭州)信息技术有限公司 | 在区块链中部署、查询和执行智能合约的方法及装置 |
CN116016255A (zh) * | 2022-12-29 | 2023-04-25 | 天津大学 | 一种基于动态代理和智能合约的通用区块链性能评测方法 |
CN116016255B (zh) * | 2022-12-29 | 2023-08-15 | 天津大学 | 一种基于动态代理和智能合约的通用区块链性能评测方法 |
Also Published As
Publication number | Publication date |
---|---|
CN108830720B (zh) | 2021-04-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108830720A (zh) | 智能合约运行方法、装置、系统和计算机可读存储介质 | |
JP7481421B2 (ja) | Apiレジストリにおけるバックエンドサービスエンドポイントからapi関数へのバインディング | |
CN109542445A (zh) | 一种Android插件化开发的方法和装置 | |
US10503630B2 (en) | Method and system for test-execution optimization in an automated application-release-management system during source-code check-in | |
CN111399840B (zh) | 一种模块开发方法及装置 | |
WO2017033441A1 (ja) | システム構築支援システム、方法および記憶媒体 | |
CN109542459A (zh) | 应用程序打包方法及装置、计算机装置及计算机存储介质 | |
JP5681279B2 (ja) | 試験装置、システム、プログラム、及び、方法 | |
CN111527474A (zh) | 软件功能的动态交付 | |
CN112256321A (zh) | 静态库打包方法、装置、计算机设备和存储介质 | |
US8938712B2 (en) | Cross-platform virtual machine and method | |
CN107463406A (zh) | 发布移动应用的方法和电子设备 | |
Zhang et al. | Distributed robotic systems in the edge-cloud continuum with ros 2: A review on novel architectures and technology readiness | |
CN109255611A (zh) | 数据处理方法、装置、系统、服务端装置和客户端装置 | |
US10530892B2 (en) | Processing request for multi-versioned service | |
CN109976832A (zh) | 一种提供寄宿程序的方法与设备 | |
CN111782210A (zh) | 页面管理方法、装置、电子设备及计算机可读介质 | |
US20170131980A1 (en) | Model driven architecture for network management and configuration | |
CN116685946A (zh) | 在不停止应用的执行的情况下的更新的共享库的重新加载 | |
CN107608672A (zh) | 一种ui模块管理器、ui模块管理方法和系统 | |
Muzumdar et al. | Navigating the Docker Ecosystem: A Comprehensive Taxonomy and Survey | |
CN110908644A (zh) | 状态节点的配置方法、装置、计算机设备和存储介质 | |
CN106951288B (zh) | 一种热更资源的开发、应用方法及装置 | |
CN115934093A (zh) | 小程序跨端应用方法、相关装置及计算机存储介质 | |
US20220300611A1 (en) | Run-time communications protocol parameter adjustment in containerized applications |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |