CN110221837A - 智能合约调用方法、装置、设备和存储介质 - Google Patents
智能合约调用方法、装置、设备和存储介质 Download PDFInfo
- Publication number
- CN110221837A CN110221837A CN201910424301.XA CN201910424301A CN110221837A CN 110221837 A CN110221837 A CN 110221837A CN 201910424301 A CN201910424301 A CN 201910424301A CN 110221837 A CN110221837 A CN 110221837A
- Authority
- CN
- China
- Prior art keywords
- intelligent contract
- block chain
- contract
- dynamic
- script
- 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
Classifications
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/547—Remote procedure calls [RPC]; Web services
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本申请涉及一种智能合约调用方法、装置、计算机设备和存储介质。所述方法包括:当检测到携带有智能合约标识的区块链操作指令时,则确定与所述智能合约标识相应配置的通信类型;当所述通信类型为进程间通信时,确定相应的动态文件调用函数;通过所述动态文件调用函数调用与所述智能合约标识对应的动态链接库文件;所述动态链接库文件是通过动态库编译方式,对与所述智能合约标识相应的智能合约脚本进行编译所生成的文件;根据调用的所述动态链接库文件,执行与所述区块链操作指令对应的操作。采用基于区块链技术的本方法能够提高区块链节点进行相应数据处理的效率。
Description
技术领域
本申请涉及区块链技术领域,特别是涉及一种智能合约调用方法、装置、计算机设备和存储介质。
背景技术
随着数据处理技术的发展,出现了区块链技术,通过区块链技术对数据进行处理,可以提高数据的安全性。通常在创建区块链网络后,需要通过智能合约为区块链网络中的各区块链节点添加数据处理功能。在实际应用中,可以通过部署各种智能合约为区块链添节点添加相应的数据处理能力。
然而,区块链节点通过部署的智能合约实现相应操作时,常常需要在进程间建立通信通道,以调用智能合约。而在进程间建立通信通道,延长了与智能合约进行通讯所耗费的时间,从而降低了区块链节点进行相应数据处理的效率。
发明内容
基于此,有必要针对上述技术问题,提供一种能够提高区块链节点进行相应数据处理效率的方法、装置、计算机设备和存储介质。
一种智能合约调用方法,应用于区块链节点集群中的区块链节点,所述方法包括:
当检测到携带有智能合约标识的区块链操作指令时,则确定与所述智能合约标识相应配置的通信类型;
当所述通信类型为进程间通信时,确定相应的动态文件调用函数;
通过所述动态文件调用函数调用与所述智能合约标识对应的动态链接库文件;所述动态链接库文件是通过动态库编译方式,对与所述智能合约标识相应的智能合约脚本进行编译所生成的文件;
根据调用的所述动态链接库文件,执行与所述区块链操作指令对应的操作。
一种智能合约调用装置,所述装置包括:
确定模块,用于当检测到携带有智能合约标识的区块链操作指令时,则确定与所述智能合约标识相应配置的通信类型;
所述确定模块还用于当所述通信类型为进程间通信时,确定相应的动态文件调用函数;
调用模块,用于通过所述动态文件调用函数调用与所述智能合约标识对应的动态链接库文件;所述动态链接库文件是通过动态库编译方式,对与所述智能合约标识相应的智能合约脚本进行编译所生成的文件;
执行模块,用于根据调用的所述动态链接库文件,执行与所述区块链操作指令对应的操作。
一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现以下步骤:
当检测到携带有智能合约标识的区块链操作指令时,则确定与所述智能合约标识相应配置的通信类型;
当所述通信类型为进程间通信时,确定相应的动态文件调用函数;
通过所述动态文件调用函数调用与所述智能合约标识对应的动态链接库文件;所述动态链接库文件是通过动态库编译方式,对与所述智能合约标识相应的智能合约脚本进行编译所生成的文件;
根据调用的所述动态链接库文件,执行与所述区块链操作指令对应的操作。
一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现以下步骤:
当检测到携带有智能合约标识的区块链操作指令时,则确定与所述智能合约标识相应配置的通信类型;
当所述通信类型为进程间通信时,确定相应的动态文件调用函数;
通过所述动态文件调用函数调用与所述智能合约标识对应的动态链接库文件;所述动态链接库文件是通过动态库编译方式,对与所述智能合约标识相应的智能合约脚本进行编译所生成的文件;
根据调用的所述动态链接库文件,执行与所述区块链操作指令对应的操作。
上述智能合约调用方法、装置、计算机设备和存储介质,当检测到携带有智能合约标识的区块链操作指令时,确定与该智能合约标识相应配置的通信类型。当通信类型为进程间通信时,确定相应的动态文件调用函数,通过该动态文件调用函数调用与智能合约标识对应的动态链接库文件,以执行与区块链操作指令对应的操作。其中,动态链接库文件是通过动态库编译方式,对与智能合约标识相应的智能合约脚本进行编译所生成的文件。这样,当需调用通信类型为进程间通信类型的智能合约执行相应的数据操作时,无需与另外的进程建立通信连接,可直接根据内部的动态文件调用函数调用动态链接库文件,通过动态链接库文件来实现区块链操作指令对应的动作。可以避免与另外进程建立通信的过程,将进程间通信转化为进程内部通信,大大提高了区块链节点进行相应数据处理的效率。
附图说明
图1为一个实施例中智能合约调用方法的应用场景图;
图2为一个实施例中智能合约调用方法的流程示意图;
图3为一个实施例中动态链接库文件的生成步骤的流程示意图;
图4为一个实施例中智能合约调用装置的结构框图;
图5为另一个实施例中智能合约调用装置的结构框图;
图6为一个实施例中计算机设备的内部结构图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
本申请提供的智能合约调用方法,可以应用于如图1所示的应用环境中。其中,终端110通过网络与区块链节点区块链节点120进行通信。区块链节点集群中的各区块链节点通过区块链网络连接互相通信。代码配置终端130通过网络与区块链节点120进行通信。智能合约平台140通过区块链网络与区块链节点120进行通信。
具体地,区块链节点121接收终端110发送的区块链操作指令并执行上述智能合约调用方法。区块链节点121还可接收代码配置终端130上传的智能合约文件,并根据智能合约文件生成相应的签名验证请求,向智能合约平台140发送签名验证请求以进行签名验证。当验证通过后根据该智能合约文件实现智能合约的配置。
其中,终端110及代码配置终端130可以但不限于是各种个人计算机、笔记本电脑、智能手机、平板电脑和便携式可穿戴设备,区块链节点121及智能合约平台可以用独立的服务器或者是多个服务器组成的服务器集群来实现,。
在一个实施例中,如图2所示,提供了一种智能合约调用方法,以该方法应用于图1中的区块链节点集群中的区块链节点为例进行说明,包括以下步骤:
S202,当检测到携带有智能合约标识的区块链操作指令时,则确定与智能合约标识相应配置的通信类型。
其中,区块链操作指令是用于触发执行基于区块链网络的数据操作的指令。基于区块链网络的数据操作,比如将数据写入区块链节点中的数据区块,或从区块链节点中查询相应数据等的操作。智能合约标识用于唯一标识相应的智能合约,智能合约标识具体可以是字母、字符、数字、汉字或字符串等。其中,智能合约是可以依据预先设置的规则自动执行相应操作的计算机程序。通信类型包括进程间通信和进程内通信。进程间通信需要建立通信的两个进程之间的通信通道,进程内通信无需建立通信通道。
具体地,当其他计算机设备需与区块链节点进行数据通讯时,可向区块链节点发起区块链操作指令。其中,与区块链节点进行数据通讯,比如将数据进行上链操作,也就是将数据写入区块链节点中的数据区块,或者从区块链节点中查询/获取数据等。当区块链节点检测到区块链操作指令时,可从区块链操作指令中提取出智能合约标识,进而确定与智能合约标识相应配置的通信类型。在一个实施例中,区块链节点可预先存储智能合约标识、及相应通信类型的关联关系,这样,区块链节点就可直接确定与智能合约标识相应配置的通信类型。
在一个实施例中,区块链节点接收代码配置终端上传的智能合约脚本和预配置的通信方式。区块链节点将智能合约脚本进行存储并提取智能合约脚本的智能合约标识和配置的通信方式,将智能合约标识与通信方式关联存储。
S204,当通信类型为进程间通信时,确定相应的动态文件调用函数。
其中,进程间通信是在不同进程之间传播或交换信息。具体地,区块链节点可从本地存储的文件中查找与智能合约标识关联存储的通信类型。当确定的通过类型为进程间通信时,区块链节点可确定与该区块链操作指令对应的动态文件调用函数。
S206,通过动态文件调用函数调用与智能合约标识对应的动态链接库文件;动态链接库文件是通过动态库编译方式,对与智能合约标识相应的智能合约脚本进行编译所生成的文件。
其中,动态链接库文件,也称DDL(Dynamic Link Library)文件,是一种软件文件类型,当计算机设备执行某一个程序时,可调用相应的DLL文件。具体地,区块链节点可根据确定的动态文件调用函数从动态链接库中查询与该智能合约标识对应的动态链接库文件,进而执行查询到的动态链接库文件。其中,动态链接库文件是通过动态库编译方式,对与智能合约标识相应的智能合约脚本进行编译所生成的文件。其中,智能合约脚本具体可以是智能合约代码。
在一个实施例中,智能合约标识用于区分不同的智能合约,与智能合约标识对应的智能合约脚本用于生成相应的动态链接库文件。其中,动态链接库文件在本申请各实施例中所起到的作用等同于智能合约所起的作用,也就是根据智能合约脚本编译生成的动态链接库文件用于表征相应的智能合约。可以理解,智能合约标识还用于区分不同的动态链接库文件。当区块链节点检测到携带有智能合约标识的区块链操作指令时,可根据智能合约标识确定相应的动态链接库文本,通过调用与智能合约标识对应的动态链接库文本,来实现调用与智能合约标识对应智能合约的功能。
在一个实施例中,区块链节点可预先通过动态库编译方式,对与智能合约标识相应的智能合约脚本进行编译生成相应的动态链接库文件。在检测到携带有智能合约标识的区块链操作指令时,就可直接通过动态文件调用函数调用与智能合约标识相应动态链接库文件。或者,区块链节点还可在需要调用智能合约时,实时通过动态库编译方式,对与智能合约标识相应的智能合约脚本进行编译生成相应的动态链接库文件,再通过动态文件调用函数调用相应的动态链接库文件。
在一个实施例中,区块链节点通过动态文件调用函数调用与智能合约标识对应的动态链接库文件,从而实现智能合约的调用。避免了当调用通信类型为进程间通信类型的智能合约时必须创建不同的信道,以通过不同信道间的通信来实现智能合约的调用。通过本申请中的各实施例,无需创建多个不同的信道,在调用智能合约时,将进程间通信转换成进程内通信即可调用智能合约(也就是通过动态文件调用函数调用动态链接库文件的方式来调用智能合约),从而提高了智能合约的调用效率,进而提高了区块链节点进行相应数据处理的效率。在一个实施例中,该智能合约调用方法还包括动态链接库文件的生成步骤,该步骤具体包括以下步骤:
S302,获取携带有智能合约标识的脚本编译指令。
其中,脚本编译指令用于触发脚本编译动作,该脚本编译动作在本实施例中具体指部署智能合约的动作,也就是实例化智能合约。具体地,区块链节点可获取携带有智能合约标识的脚本编译指令。该脚本编译指令可以是本地定时触发的,也可以是其他计算机设备发送至区块链节点。
在一个实施例中,区块链节点接收代码配置终端上传的智能合约脚本和相应配置的通信方式,区块链节点将智能合约脚本进行存储,提取智能合约脚本的智能合约标识和配置的通信方式,将智能合约标识与通讯方式对应存储。
在一个实施例中,区块链节点在检测到智能合约脚本上传时,可直接获取上传的智能合约脚本对应的智能合约标识,根据该智能合约标识生成脚本编译指令,进而根据脚本编译指令对上传的智能合约脚本进行编译。
S304,根据脚本编译指令确定与智能合约标识对应的通信类型。
具体地,区块链节点在对智能合约脚本进行编译前,可查询与智能合约标识对应的通信类型。
S306,当确定的通信类型为进程间通信时,获取动态库编译信息和与智能合约标识对应的智能合约脚本。
其中,动态库编译信息是编译库文件所需的配置信息,具体可包括存储位置、文件类型、及接口信息等。具体地,当智能合约脚本对应的通信方式为进程间通信时,区块链节点可获取动态库编译信息和与智能合约标识对应的智能合约脚本。
S308,按照动态库编译信息,采用动态库编译方式对智能合约脚本进行编译,生成相应的动态链接库文件。
具体地,区块链节点可对智能合约脚本进行修改,将智能合约脚本的编译方式修改为动态库编译方式。按照动态库编译信息,采用动态库编译方式对智能合约脚本进行编译,生成相应的动态链接库文件。
在一个实施例中,动态库编译信息包括动态库接口编译信息。步骤S308,也就是按照动态库编译信息,采用动态库编译方式对智能合约脚本进行编译,生成相应的动态链接库文件的步骤具体包括:将动态库接口编译信息添加至智能合约脚本中;读取动态库接口编译信息,采用动态库编译方式根据动态库接口编译信息将智能合约脚本编译为与动态库匹配的动态链接库文件。
具体地,区块链节点可将动态库接口编译信息添加至智能合约脚本中。读取动态库接口编译信息,采用动态库编译方式根据动态库接口编译信息将智能合约脚本编译为与动态库匹配的动态链接库文件。在生成动态链接库文件后,将动态链接库文件加载到进程中。这样,可通过配置的接口编译信息,快捷准确地将智能合约脚本编译为与动态库匹配的动态链接库文件。
上述实施例中,在实例化智能合约的时候,检测到智能合约对应的通信方式为进程间通信时,根据动态库编译信息对上传的智能合约脚本进行编译,得到动态链接库文件。这样,在部署智能合约时,无需与另外的进程建立通信连接,可直接根据内部函数调用动态链接库文件,以实现智能合约的动作,避免了与另外进程建立通信的过程,将进程间通信转化为进程内部通信,提高了部署智能合约的效率。
S208,根据调用的动态链接库文件,执行与区块链操作指令对应的操作。
具体地,区块链节点可加载查询到的动态链接库文件,通过加载动态链接库文件,实现与区块链操作指令相应的操作。比如,区块链节点通过加载动态链接库文件实现添加记账数据的操作。
上述智能合约调用方法,当检测到携带有智能合约标识的区块链操作指令时,确定与该智能合约标识相应配置的通信类型。当通信类型为进程间通信时,确定相应的动态文件调用函数,通过该动态文件调用函数调用与智能合约标识对应的动态链接库文件,以执行与区块链操作指令对应的操作。其中,动态链接库文件是通过动态库编译方式,对与智能合约标识相应的智能合约脚本进行编译所生成的文件。这样,当需调用通信类型为进程间通信类型的智能合约执行相应的数据操作时,无需与另外的进程建立通信连接,可直接根据内部的动态文件调用函数调用动态链接库文件,通过动态链接库文件来实现区块链操作指令对应的动作。可以避免与另外进程建立通信的过程,将进程间通信转化为进程内部通信,大大提高了区块链节点进行相应数据处理的效率。
在一个实施例中,该智能合约调用方法还包括当通信类型为进程内通信时,执行区块链操作指令对应的操作的步骤,该步骤具体包括:当通信类型为进程内通信时,获取与智能合约标识对应的智能合约编译文件;智能合约编译文件是对与智能合约标识相应的智能合约脚本进行直接编译所生成的文件;根据智能合约编译文件,执行与区块链操作指令对应的操作。
具体地,当与智能合约标识对应的预配置的通信类型为进程内通信时,区块链节点则可直接获取与智能合约标识对应的智能合约编译文件。该智能合约编译文件为区块链节点根据与智能合约标识相应的智能合约脚本进行直接编译而生成的文件。区块链节点可根据该智能合约编译文件,执行与区块链操作指令对应的操作。
上述实施例中,当与智能合约标识对应的预配置的通信类型为进程内通信时,则可根据智能合约编译文件,执行与区块链操作指令对应的操作。该智能合约编译文件是对与智能合约标识相应的智能合约脚本进行直接编译所生成的文件。这样,通过进程内部通信,可以提高区块链节点进行相应数据处理的效率。
在一个实施例中,按照动态库编译信息,采用动态库编译方式对智能合约脚本进行编译,生成相应的动态链接库文件的步骤具体包括以下步骤:确定智能合约脚本所对应的智能合约类型;当智能合约类型为源代码形式合约时,调用编译工具,按照动态库编译信息,采用动态库编译方式对智能合约脚本进行编译,生成相应的动态链接库文件;将动态链接库文件加载至区块链节点集群中的各区块链节点。
其中,源代码形式合约是指根据源码编译而成的合约,也就是该智能合约脚本为源代码。具体地,区块链节点在获取到智能合约脚本后,可判断智能合约脚本所对应的智能合约是否为源代码形式合约,若判定为源代码形式合约,则调用编译工具对智能合约脚本进行编译,生成相应的动态链接库文件,将相应的动态链接库文件加载到区块链节点集群中的各区块链节点上。
在一个实施例中,对智能合约脚本进行编译是将智能合约的源代码编译成能直接被计算机或虚拟机执行的目标代码。编译工具具体可包括预处理器、编译器和链接器等。将源代码输入至预处理器和编译器后,得到目标代码,通过链接器可将目标代码转化成可执行程序或文件。
上述实施例中,当智能合约脚本为源代码时,调用编译工具,按照动态库编译信息,采用动态库编译方式对智能合约脚本进行编译,生成相应的动态链接库文件,可以将源代码编译成动态链接库文件并加载到区块链节点上。
在一个实施例中,该基于智能合约调用方法还包括签名验证的步骤,该步骤具体包括:接收代码配置终端发送的智能合约文件;智能合约文件包括智能合约脚本和与代码配置终端相应的数字签名;根据智能合约文件生成相应的签名验证请求;向智能合约平台发送签名验证请求;签名验证请求用于指示智能合约平台对智能合约文件中的数字签名进行验证;当接收到智能合约平台反馈的表示签名验证通过的反馈信息时,执行获取携带有智能合约标识的脚本编译指令。
具体地,区块链节点可接收代码配置终端发送的智能合约文件,该智能合约文件包括智能合约脚本和与代码配置终端相应的数字签名。区块链节点根据智能合约文件生成相应的签名验证请求,并向智能合约平台发送签名验证请求。智能合约平台收到签名验证请求后对智能合约文件中的数字签名进行验证。当区块链节点接收到智能合约平台反馈的表示签名验证通过的反馈信息时,则在区块链节点本地节点部署智能合约,也就是执行获取携带有智能合约标识的脚本编译指令。
其中,智能合约平台是一个中心化或去中心化的智能合约存储系统,可进行智能合约的审计、编译及下发等。典型的智能合约平台可以是一个承载智能合约审计、编译及下发等功能的计算机设备。
在一个实施例中,代码配置终端通过哈希函数对智能合约脚本进行哈希运算,得到摘要信息。再采用代码配置终端的私钥对摘要信息进行加密,生成相应的数字签名。代码配置终端可将智能合约脚本和数字签名一起发送至区块链节点。区块链节点收到智能合约脚本和数字签名后,则上报至智能合约平台。智能合约平台依据代码配置终端对应的公钥对数字签名进行解密验证,验证通过后向区块链节点反馈信息。
在一个实施例中,当接收到智能合约平台反馈的表示签名验证通过的反馈信息时,执行获取携带有智能合约标识的脚本编译指令的步骤具体包括:当接收到智能合约平台反馈的表示签名验证通过的反馈信息时,提取反馈信息中的平台数字签名;对平台数字签名进行验证;当平台数字签名通过验证后,执行获取携带有智能合约标识的脚本编译指令。
具体地,智能合约平台反馈的表示签名验证通过的反馈信息中携带平台数字签名。该平台数字签名是智能合约平台采用相应的私钥对验证结果进行加密后所生成的。其中,验证结果是对代码配置终端对应的数字签名进行验证的结果。智能合约平台可将验证结果和平台数字签名一起发送至区块链节点。
区块链节点通过与智能合约平台相应的公钥对平台数字签名进行解密验证,当平台数字签名通过验证后,在本地节点部署目标智能合约。
在一个实时例中,若本地区块链节点不是区块链网络的创建节点,则本地区块链节点可通过如下几种方式获取智能合约平台反馈的信息。方式一,接收智能合约平台向区块链网络发布的信息;方式二,接收区块链网络的创建节点在区块链网络中传递发布的信息;方式三,从区块链网络中的其他区块链节点获取,其他区块链节点预先从智能合约平台或创建节点获取相应信息。
在一个实施例中,若本地区块链节点是区块链网络的创建节点,则本地区块链节点可以通过以下两种方式获取智能合约平台反馈的信息。方式一,接收智能合约平台向区块链网络发布的信息;方式二,向智能合约平台发送签名验证请求,接收智能合约平台下发的反馈信息。
上述实施例中,通过智能合约平台对代码配置终端发送的智能合约文件进行验证,当验证通过后再编译智能合约脚本,实现智能合约的部署,可保障本地部署的智能合约的合法性和安全性。
在一个实施例中,用户在安装智能合约的时候,可通过以下两种方式部署智能合约。第一种:向区块链节点上传智能合约源码,对智能合约源码进行编译,得到二进制程序或文件。第二种:根据用户的选择指令选取已经编译好的可执行程序或这库文件,将选择的可执行程序或者库文件直接加载到区块链节点中,以完成安装智能合约。采用上述第二种方式部署智能合约,通过直接上传智能合约的可执行程序或者库文件,可以保护源码智能合约的源码。
应该理解的是,虽然图2-3的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图2-3中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
在一个实施例中,如图4所示,提供了一种智能合约调用装置400,包括:确定模块401、调用模块402和执行模块403,其中:
确定模块401,用于当检测到携带有智能合约标识的区块链操作指令时,则确定与智能合约标识相应配置的通信类型;
确定模块401还用于当通信类型为进程间通信时,确定相应的动态文件调用函数;
调用模块402,用于通过动态文件调用函数调用与智能合约标识对应的动态链接库文件;动态链接库文件是通过动态库编译方式,对与智能合约标识相应的智能合约脚本进行编译所生成的文件;
执行模块403,用于根据调用的动态链接库文件,执行与区块链操作指令对应的操作。
在一个实施例中,该智能合约调用装置400还包括获取模块404,获取模块404还用于当通信类型为进程内通信时,获取与智能合约标识对应的智能合约编译文件;智能合约编译文件是对与智能合约标识相应的智能合约脚本进行直接编译所生成的文件。执行模块403还用于根据智能合约编译文件,执行与区块链操作指令对应的操作。
在一个实施例中,该智能合约调用装置400还包括编译模块405,其中:
获取模块404还用于获取携带有智能合约标识的脚本编译指令。
确定模块401还用于根据脚本编译指令确定与智能合约标识对应的通信类型。
获取模块404还用于当确定的通信类型为进程间通信时,获取动态库编译信息和与智能合约标识对应的智能合约脚本。
编译模块405还用于按照动态库编译信息,采用动态库编译方式对智能合约脚本进行编译,生成相应的动态链接库文件。
在一个实施例中,动态库编译信息包括动态库接口编译信息。编译模块405还用于将动态库接口编译信息添加至智能合约脚本中;读取动态库接口编译信息,采用动态库编译方式根据动态库接口编译信息将智能合约脚本编译为与动态库匹配的动态链接库文件。
在一个实施例中,编译模块405还用于确定智能合约脚本所对应的智能合约类型;当智能合约类型为源代码形式合约时,调用编译工具,按照动态库编译信息,采用动态库编译方式对智能合约脚本进行编译,生成相应的动态链接库文件;将动态链接库文件加载至区块链节点集群中的各区块链节点。
参考图5,在一个实施例中,该智能合约调用装置400还包括接收模块406、生成模块407和发送模块408,其中:
接收模块406,用于接收代码配置终端发送的智能合约文件;智能合约文件包括智能合约脚本和与代码配置终端相应的数字签名。
生成模块407,用于根据智能合约文件生成相应的签名验证请求。
发送模块408,用于向智能合约平台发送签名验证请求;签名验证请求用于指示智能合约平台对智能合约文件中的数字签名进行验证。
执行模块403还用于当接收到智能合约平台反馈的表示签名验证通过的反馈信息时,执行获取携带有智能合约标识的脚本编译指令。
在一个实施例中,执行模块403还用于当接收到智能合约平台反馈的表示签名验证通过的反馈信息时,提取反馈信息中的平台数字签名;对平台数字签名进行验证;当平台数字签名通过验证后,执行获取携带有智能合约标识的脚本编译指令。
上述智能合约调用装置,当检测到携带有智能合约标识的区块链操作指令时,确定与该智能合约标识相应配置的通信类型。当通信类型为进程间通信时,确定相应的动态文件调用函数,通过该动态文件调用函数调用与智能合约标识对应的动态链接库文件,以执行与区块链操作指令对应的操作。其中,动态链接库文件是通过动态库编译方式,对与智能合约标识相应的智能合约脚本进行编译所生成的文件。这样,当需调用通信类型为进程间通信类型的智能合约执行相应的数据操作时,无需与另外的进程建立通信连接,可直接根据内部的动态文件调用函数调用动态链接库文件,通过动态链接库文件来实现区块链操作指令对应的动作。可以避免与另外进程建立通信的过程,将进程间通信转化为进程内部通信,大大提高了区块链节点进行相应数据处理的效率。
关于智能合约调用装置的具体限定可以参见上文中对于智能合约调用方法的限定,在此不再赘述。上述智能合约调用装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是区块链节点,其内部结构图可以如图6所示。该计算机设备包括通过系统总线连接的处理器、存储器和网络接口。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种智能合约调用方法。
本领域技术人员可以理解,图6中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,提供了一种计算机设备,包括存储器和处理器,存储器存储有计算机程序,计算机程序被处理器执行时,使得处理器执行上述智能合约调用方法的步骤。此处智能合约调用方法的步骤可以是上述各个实施例的智能合约调用方法中的步骤。
在一个实施例中,提供了一种计算机可读存储介质,存储有计算机程序,计算机程序被处理器执行时,使得处理器执行上述智能合约调用方法的步骤。此处智能合约调用方法的步骤可以是上述各个实施例的智能合约调用方法中的步骤。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。
Claims (10)
1.一种智能合约调用方法,应用于区块链节点集群中的区块链节点,所述方法包括:
当检测到携带有智能合约标识的区块链操作指令时,则确定与所述智能合约标识相应配置的通信类型;
当所述通信类型为进程间通信时,确定相应的动态文件调用函数;
通过所述动态文件调用函数,调用与所述智能合约标识对应的动态链接库文件;所述动态链接库文件是通过动态库编译方式,对与所述智能合约标识相应的智能合约脚本进行编译所生成的文件;
根据调用的所述动态链接库文件,执行与所述区块链操作指令对应的操作。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
当所述通信类型为进程内通信时,获取与所述智能合约标识对应的智能合约编译文件;所述智能合约编译文件是对与所述智能合约标识相应的智能合约脚本进行直接编译所生成的文件;
根据所述智能合约编译文件,执行与所述区块链操作指令对应的操作。
3.根据权利要求1所述的方法,其特征在于,所述方法还包括:
获取携带有智能合约标识的脚本编译指令;
根据所述脚本编译指令确定与所述智能合约标识对应的通信类型;
当确定的通信类型为进程间通信时,获取动态库编译信息和与所述智能合约标识对应的智能合约脚本;
按照所述动态库编译信息,采用动态库编译方式对所述智能合约脚本进行编译,生成相应的动态链接库文件。
4.根据权利要求3所述的方法,其特征在于,所述动态库编译信息包括动态库接口编译信息;所述按照所述动态库编译信息,采用动态库编译方式对所述智能合约脚本进行编译,生成相应的动态链接库文件,包括:
将所述动态库接口编译信息添加至所述智能合约脚本中;
读取所述动态库接口编译信息,采用动态库编译方式根据所述动态库接口编译信息将所述智能合约脚本编译为与动态库匹配的动态链接库文件。
5.根据权利要求3所述的方法,其特征在于,所述按照所述动态库编译信息,采用动态库编译方式对所述智能合约脚本进行编译,生成相应的动态链接库文件,包括:
确定所述智能合约脚本所对应的智能合约类型;
当所述智能合约类型为源代码形式合约时,调用编译工具,按照所述动态库编译信息,采用动态库编译方式对所述智能合约脚本进行编译,生成相应的动态链接库文件;
将所述动态链接库文件加载至所述区块链节点集群中的各区块链节点。
6.根据权利要求3至5任一项所述的方法,其特征在于,所述方法还包括:
接收代码配置终端发送的智能合约文件;所述智能合约文件包括智能合约脚本和与所述代码配置终端相应的数字签名;
根据所述智能合约文件生成相应的签名验证请求;
向智能合约平台发送所述签名验证请求;所述签名验证请求用于指示所述智能合约平台对所述智能合约文件中的数字签名进行验证;
当接收到所述智能合约平台反馈的表示签名验证通过的反馈信息时,执行所述获取携带有智能合约标识的脚本编译指令。
7.根据权利要求6所述的方法,其特征在于,所述当接收到所述智能合约平台反馈的表示签名验证通过的反馈信息时,执行所述获取携带有智能合约标识的脚本编译指令,包括:
当接收到所述智能合约平台反馈的表示签名验证通过的反馈信息时,提取所述反馈信息中的平台数字签名;
对所述平台数字签名进行验证;
当所述平台数字签名通过验证后,执行所述获取携带有智能合约标识的脚本编译指令。
8.一种智能合约调用装置,其特征在于,所述装置包括:
确定模块,用于当检测到携带有智能合约标识的区块链操作指令时,则确定与所述智能合约标识相应配置的通信类型;
所述确定模块还用于当所述通信类型为进程间通信时,确定相应的动态文件调用函数;
调用模块,用于通过所述动态文件调用函数调用与所述智能合约标识对应的动态链接库文件;所述动态链接库文件是通过动态库编译方式,对与所述智能合约标识相应的智能合约脚本进行编译所生成的文件;
执行模块,用于根据调用的所述动态链接库文件,执行与所述区块链操作指令对应的操作。
9.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至7中任一项所述方法的步骤。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至7中任一项所述的方法的步骤。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910424301.XA CN110221837A (zh) | 2019-05-21 | 2019-05-21 | 智能合约调用方法、装置、设备和存储介质 |
PCT/CN2019/122856 WO2020233092A1 (zh) | 2019-05-21 | 2019-12-04 | 智能合约调用方法、装置、设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910424301.XA CN110221837A (zh) | 2019-05-21 | 2019-05-21 | 智能合约调用方法、装置、设备和存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110221837A true CN110221837A (zh) | 2019-09-10 |
Family
ID=67821435
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910424301.XA Pending CN110221837A (zh) | 2019-05-21 | 2019-05-21 | 智能合约调用方法、装置、设备和存储介质 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN110221837A (zh) |
WO (1) | WO2020233092A1 (zh) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110609679A (zh) * | 2019-09-17 | 2019-12-24 | 腾讯科技(深圳)有限公司 | 数据处理方法、装置、计算机可读存储介质和计算机设备 |
CN110855777A (zh) * | 2019-11-12 | 2020-02-28 | 腾讯科技(深圳)有限公司 | 一种基于区块链的节点管理方法及装置 |
CN111026461A (zh) * | 2019-12-06 | 2020-04-17 | 联想(北京)有限公司 | 用于区块链系统的数据处理方法、装置和电子设备 |
CN111221904A (zh) * | 2019-12-23 | 2020-06-02 | 深圳壹账通智能科技有限公司 | 智能合约部署、执行方法、装置、电子设备及存储介质 |
CN111324396A (zh) * | 2020-03-19 | 2020-06-23 | 深圳市网心科技有限公司 | 一种区块链智能合约执行方法、装置及设备 |
WO2020233092A1 (zh) * | 2019-05-21 | 2020-11-26 | 深圳壹账通智能科技有限公司 | 智能合约调用方法、装置、设备和存储介质 |
CN112015399A (zh) * | 2020-08-31 | 2020-12-01 | 京东数字科技控股股份有限公司 | 一种生成智能合约的数据处理方法及装置 |
CN113805889A (zh) * | 2021-08-27 | 2021-12-17 | 成都质数斯达克科技有限公司 | 一种智能合约调用执行方法、装置、设备及可读存储介质 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9348678B1 (en) * | 2012-06-20 | 2016-05-24 | Mobile Iron, Inc. | Partitioned application environment |
CN108665253A (zh) * | 2018-05-18 | 2018-10-16 | 百度在线网络技术(北京)有限公司 | 一种区块链网络的数据处理方法、装置、设备及存储介质 |
CN109032706B (zh) * | 2018-07-16 | 2022-10-11 | 百度在线网络技术(北京)有限公司 | 智能合约执行方法、装置、设备和存储介质 |
CN109542767B (zh) * | 2018-10-25 | 2023-04-11 | 平安科技(深圳)有限公司 | 基于区块链的自动化测试方法、装置、计算机设备和存储介质 |
CN110221837A (zh) * | 2019-05-21 | 2019-09-10 | 深圳壹账通智能科技有限公司 | 智能合约调用方法、装置、设备和存储介质 |
-
2019
- 2019-05-21 CN CN201910424301.XA patent/CN110221837A/zh active Pending
- 2019-12-04 WO PCT/CN2019/122856 patent/WO2020233092A1/zh active Application Filing
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2020233092A1 (zh) * | 2019-05-21 | 2020-11-26 | 深圳壹账通智能科技有限公司 | 智能合约调用方法、装置、设备和存储介质 |
CN110609679A (zh) * | 2019-09-17 | 2019-12-24 | 腾讯科技(深圳)有限公司 | 数据处理方法、装置、计算机可读存储介质和计算机设备 |
CN110609679B (zh) * | 2019-09-17 | 2024-04-02 | 腾讯科技(深圳)有限公司 | 数据处理方法、装置、计算机可读存储介质和计算机设备 |
CN110855777A (zh) * | 2019-11-12 | 2020-02-28 | 腾讯科技(深圳)有限公司 | 一种基于区块链的节点管理方法及装置 |
CN110855777B (zh) * | 2019-11-12 | 2022-09-13 | 腾讯科技(深圳)有限公司 | 一种基于区块链的节点管理方法及装置 |
CN111026461A (zh) * | 2019-12-06 | 2020-04-17 | 联想(北京)有限公司 | 用于区块链系统的数据处理方法、装置和电子设备 |
CN111221904A (zh) * | 2019-12-23 | 2020-06-02 | 深圳壹账通智能科技有限公司 | 智能合约部署、执行方法、装置、电子设备及存储介质 |
CN111324396A (zh) * | 2020-03-19 | 2020-06-23 | 深圳市网心科技有限公司 | 一种区块链智能合约执行方法、装置及设备 |
CN111324396B (zh) * | 2020-03-19 | 2023-09-15 | 深圳市迅雷网络技术有限公司 | 一种区块链智能合约执行方法、装置及设备 |
CN112015399A (zh) * | 2020-08-31 | 2020-12-01 | 京东数字科技控股股份有限公司 | 一种生成智能合约的数据处理方法及装置 |
CN113805889A (zh) * | 2021-08-27 | 2021-12-17 | 成都质数斯达克科技有限公司 | 一种智能合约调用执行方法、装置、设备及可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
WO2020233092A1 (zh) | 2020-11-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110221837A (zh) | 智能合约调用方法、装置、设备和存储介质 | |
CN109683988B (zh) | 微服务启动方法、装置、计算机设备和存储介质 | |
CN110609679B (zh) | 数据处理方法、装置、计算机可读存储介质和计算机设备 | |
EP3038004A1 (en) | Method for providing security for common intermediate language-based program | |
CN104598274B (zh) | 一种自动插桩编译安装方法及系统 | |
CN108363580A (zh) | 应用程序安装方法、装置、计算机设备和存储介质 | |
CN111612614A (zh) | 一种基于公链的子链业务系统 | |
CN109039751A (zh) | 配置路由的方法、装置、计算机设备和存储介质 | |
US10977021B2 (en) | SE applet processing method, terminal, and server | |
CN108628743A (zh) | 应用程序测试方法、装置、设备及存储介质 | |
CN110381075B (zh) | 基于区块链的设备身份认证方法和装置 | |
TW202213217A (zh) | 安全的服務請求處理方法及裝置 | |
CN105101169A (zh) | 可信执行环境处理信息的方法、装置、终端及sim卡 | |
CN104011730A (zh) | 外部代码安全机制 | |
CN116662941B (zh) | 信息加密方法、装置、计算机设备和存储介质 | |
CN110109712A (zh) | 业务组件加载方法、装置、计算机设备和存储介质 | |
CN110768784A (zh) | 密码传输方法、装置、计算机设备和存储介质 | |
CN106888448B (zh) | 应用下载方法、安全元件及终端 | |
CN110531984A (zh) | 代码编译方法、装置、系统、计算机设备和存储介质 | |
CN113190238A (zh) | 框架的部署方法、装置、计算机设备和存储介质 | |
CN108762787A (zh) | 软件修复方法、装置、计算机设备和存储介质 | |
CN107145342A (zh) | 应用的渠道信息的处理方法和装置 | |
CN110190980B (zh) | 支持插件化接入不同区块链联盟链网络的系统和方法 | |
CN108667919A (zh) | 数据处理方法、装置、计算机设备和存储介质 | |
CN112732676B (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 |