CN111563253B - 智能合约运行方法、装置、设备及存储介质 - Google Patents
智能合约运行方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN111563253B CN111563253B CN202010683529.3A CN202010683529A CN111563253B CN 111563253 B CN111563253 B CN 111563253B CN 202010683529 A CN202010683529 A CN 202010683529A CN 111563253 B CN111563253 B CN 111563253B
- Authority
- CN
- China
- Prior art keywords
- target
- contract
- link library
- intelligent contract
- transaction request
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/52—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
- G06F21/53—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by executing in a restricted environment, e.g. sandbox or secure virtual machine
-
- 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/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44521—Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本申请公开了一种智能合约运行方法、装置、设备及存储介质,涉及区块链技术领域,可应用于云计算和云服务。具体实现方案为:获取基于目标智能合约发起的目标事务请求;其中,目标事务请求包括目标智能合约中待调用的目标合约方法;基于共享链接库调用目标合约方法,在可信执行环境中处理目标事务请求;其中,共享链接库通过如下确定:对目标智能合约进行编译,生成链接有可信执行环境的共享链接库;加载共享链接库。本申请提高了智能合约运行过程中的安全性,并减少了资源损耗,同时兼顾了区块链***的通用性。
Description
技术领域
本申请涉及计算机技术领域,尤其涉及区块链技术,具体涉及一种智能合约运行方法、装置、设备及存储介质。
背景技术
智能合约具备复杂的逻辑处理能力,用于实现对现实世界事务和经济活动到区块链世界的映射。对于使用合约处理需要隐私保护的数据时,现有的虚拟机无法对智能合约的执行过程进行保护。
发明内容
本申请提供了一种安全性更高、资源损耗更少、通用性更好的智能合约运行方法、装置、设备及存储介质。
根据本申请的一方面,提供了一种智能合约运行方法,包括:
获取基于目标智能合约发起的目标事务请求;其中,所述目标事务请求包括所述目标智能合约中待调用的目标合约方法;
基于共享链接库调用所述目标合约方法,在可信执行环境中处理所述目标事务请求;其中,所述共享链接库通过如下确定:对所述目标智能合约进行编译,生成链接有可信执行环境的共享链接库;加载所述共享链接库。
根据本申请的另一方面,提供了一种智能合约运行装置,包括:
目标事务请求获取模块,用于获取基于目标智能合约发起的目标事务请求;其中,所述目标事务请求包括所述目标智能合约中待调用的目标合约方法;
目标事务请求执行模块,用于基于共享链接库调用所述目标合约方法,在可信执行环境中处理所述目标事务请求;
其中,所述共享链接库通过如下确定:通过共享链接库生成模块对所述目标智能合约进行编译,生成链接有可信执行环境的共享链接库;通过加载模块加载所述共享链接库。
根据本申请的又一方面,提供了一种电子设备,包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行本申请实施例提供的任意一种智能合约运行方法。
根据本申请的再一方面,提供了一种存储有计算机指令的非瞬时计算机可读存储介质,所述计算机指令用于使所述计算机执行本申请实施例提供的任意一种智能合约运行方法。
本申请实施例提高了智能合约运行过程中的安全性,并减少了资源损耗,同时兼顾了区块链***的通用性。
应当理解,本部分所描述的内容并非旨在标识本公开的实施例的关键或重要特征,也不用于限制本公开的范围。本公开的其它特征将通过以下的说明书而变得容易理解。
附图说明
附图用于更好地理解本方案,不构成对本申请的限定。其中:
图1是本申请实施例提供的一种智能合约运行方法的流程图;
图2是本申请实施例提供的另一种智能合约运行方法的流程图;
图3是本申请实施例提供的另一种智能合约运行方法的流程图;
图4是本申请实施例提供的一种智能合约运行装置的结构图;
图5是用来实现本申请实施例的智能合约运行方法的电子设备的框图。
具体实施方式
以下结合附图对本申请的示范性实施例做出说明,其中包括本申请实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本申请的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
本申请实施例提供的各智能合约运行方法和智能合约运行装置,适用于在区块链***中,通过区块链节点进行智能合约调用以实现相应功能的情况。本申请实施例提供的各智能合约运行方法,可以由智能合约运行装置执行,该装置由软件和/或硬件实现,并具体配置于承载有区块链节点的电子设备中。
图1是本申请实施例提供的一种智能合约运行方法的流程图,该方法包括:
S101、获取基于目标智能合约发起的目标事务请求;其中,目标事务请求包括目标智能合约中待调用的目标合约方法。
其中,目标智能合约为具备某种业务功能的智能合约,通过调用该目标智能合约,能够实现相应的业务功能。
S102、基于共享链接库调用目标合约方法,在可信执行环境中处理目标事务请求;其中,共享链接库通过如下确定:对目标智能合约进行编译,生成链接有可信执行环境的共享链接库;加载共享链接库。
其中,共享链接库可以理解为现有的、成熟的、可复用的可执行代码,可以***作***载入内存中直接执行,可供多个程序同时共享使用,以提高软件开发效率。
可选的,共享链接库可以是静态链接库,用于存储目标智能合约的源文件中用到的库函数与汇编生成的目标代码合并所生成的可执行文件。
可以理解的是,静态链接库中的可执行文件中包含有库函数,因此可执行程序与库函数再无关系,放在任何环境中都可以执行,方便程序移植。
可选的,共享链接库可以是动态链接库,所存储的编译的可执行文件并未被连接到目标代码中,从而达到了隐藏源代码的目的,同时减少了共享链接库的空间占用量,缓解了代码耦合的问题。
其中,可信执行环境(Trusted execution environment,TEE)是主处理器内的安全区域。它运行在一个独立的环境中且与操作***并行运行。它确保TEE中加载的代码和数据的机密性和完整性都得到保护。通过同时使用硬件和软件来保护数据和代码,这个并行***比传统***,也即富执行环境(Rich Execution Environment,REE)更加安全。在TEE中运行的可信应用(Trusted Application,TA)可以访问设备主处理器和内存的全部功能,而硬件隔离保护这些组件不受主操作***中运行的用户安装应用程序的影响。TEE中的软件和加密隔离相互保护不同的可信应用。
若共享链接库为静态链接库,由于静态链接库的目标代码需要预先载入,且对函数库的链接需要在编译时期完成,因此仅能在电子设备接入区块链***时,进行静态链接库的生成。示例性地,对目标智能合约进行编译,生成链接有可信执行环境的共享链接库,可以是:接收目标智能合约部署指令;响应于目标智能合约部署指令,对目标智能合约进行编译,生成连接有可信执行环境的静态链接库;加载该共享链接库。
若共享链接库为动态链接库,由于动态链接库的目标代码在程序运行时才会被载入,因此可以在电子设备接入区块链***时,或在区块链***运行过程中,进行动态链接库的生成,从而便于在区块链***运行的不同时期进行智能合约的动态部署和更新升级。示例性地,对目标智能合约进行编译,生成链接有可信执行环境的共享链接库,可以是:在接入区块链***时或在区块链***运行过程中,接收目标智能合约部署指令;响应于目标智能合约部署指令,对目标智能合约进行编译,生成链接有可信执行环境的动态链接库。其中,区块链***可以是常规区块链***还可以是超级区块链***。
可选的,可以基于共享链接库直接进行目标方法的调用,从而在可信执行环境中处理目标事务请求。为了避免在目标事务请求中多次进行同一目标合约方法的调用出现混乱的情况,在本申请实施例的一种可选实施方式中,基于共享链接库调用所述目标合约方法,在可信执行环境中处理所述目标事务请求,可以是:根据所述目标事务请求中的合约标识所关联的共享链接库,创建目标合约实例;根据所述目标事务请求中的方法标识,在可信执行环境中调用所述目标合约实例中的目标合约方法。
具体的,根据目标事务请求中的合约标识,进行与目标智能合约相关联的共享链接库的选取;根据所选取的共享链接库,创建目标合约实例;根据目标事务请求中的方法标识,对目标合约实例中相应的目标合约方法进行调用。
为了实现对不同事务请求的区分,同时避免目标合约方法执行过程中信息的丢失、泄露或数据混乱,便于数据管理,在根据目标事务请求中的合约标识所关联的共享链接库,创建目标合约实例之前,还可以创建目标会话;相应的,根据目标事务请求中的合约标识所关联的共享链接库,创建目标合约实例,可以是:在目标会话中,根据目标事务请求中的合约标识所关联的共享链接库,创建目标合约实例。
具体的,创建目标会话,用于管理本次调用所使用到的内存和全局变量,从而实现上下文的隔离;初始化目标会话中合约方法运行所需要的内存和全局变量;根据目标事务请求中的合约标识,进行与目标智能合约相关联的共享链接库的选取;在目标会话中,根据所选取的共享链接库,创建目标合约实例;根据目标事务请求中的方法标识,对目标合约实例中相应的目标合约方法进行调用;将执行结果从合约内部复制到目标会话所初始化的虚拟机内存中。
本申请实施例通过获取基于目标智能合约发起的目标事务请求,其中目标事务请求包括目标智能合约中待调用的目标合约方法;基于共享链接库调用目标合约方法,在可信执行环境中处理目标事务请求;其中共享链接库通过如下方式确定:对目标智能合约进行编译,生成连接有可信执行环境的共享链接库;加载共享链接库。采用上述技术方案,能够将目标智能合约的运行过程从富执行环境迁移至可信执行环境中,从而提高了目标智能合约执行过程的安全性。同时,仅将虚拟机进行智能合约运行的过程迁移至可信执行环境,将共享链接库的生成和加载过程隔离在可信执行环境之外,采用此种轻量的方式,实现了资源的合理利用,避免了资源的浪费。并且,通过对目标智能合约进行编译,即可实现连接有可信执行环境的共享链接库的生成,无需进行合约内容修改,能够适配现有的区块链***中的智能合约运行方法,通用性好。
图2是本申请实施例提供的另一种智能合约运行方法的流程图,该方法在上述各技术方案的基础上,进行了优化改进。
进一步地,将操作“对目标智能合约进行编译,生成链接有可信执行环境的共享链接库”细化为“对目标智能合约进行编译,得到静态链接库;将静态链接库链接至与目标智能合约所关联的目标可信应用;对链接有静态链接库的目标可信应用进行编译,得到共享链接库”,以完善共享链接库的构建机制。
如图2所示的一种智能合约运行方法,包括:
S201、对目标智能合约进行编译,得到静态链接库。
S202、将静态链接库链接至与目标智能合约所关联的目标可信应用。
其中,可信应用可以理解为在可信执行环境中运行的应用。一般的,在一个可信执行环境中可能安装有多个可信应用,不同可信应用之间通过密码学技术彼此隔离开来,不会随意读取和操作其他可信应用的数据,从而保证了数据安全。另外,可信应用在执行前需要做完整性验证,从而保证应用没有被篡改,进而保证了运行结果的可靠性。
其中,在智能合约开发阶段,可以针对各智能合约在可信执行环境中设置与之关联的可信应用,从而借助可信应用,在可信执行环境中进行所关联的智能合约的运行。
其中,目标可信应用可以是动态链接库,或者二进制可读文件。
S203、对链接有静态链接库的目标可信应用进行编译,得到共享链接库。
需要说明的是,通过对链接有静态链接库的目标可信应用进行编译,得到共享链接库,使得在使用该共享链接库进行目标事务请求处理时,能够在可信执行环境中调用目标智能合约,从而提高了智能合约运行过程的安全性。
S204、加载共享链接库。
需要说明的是,当共享链接库为静态链接库时,需要在生成静态链接库时,进行共享链接库的加载;当共享链接库为动态链接库时,仅需在调用智能合约之前进行加载即可,为智能合约的更新升级提供了便利。
S205、获取基于目标智能合约发起的目标事务请求;其中,目标事务请求包括目标智能合约中待调用的目标合约方法。
S206、基于共享链接库调用目标合约方法,在可信执行环境中处理目标事务请求。
示例性地,基于共享链接库调用目标合约方法,在可信执行环境中处理目标事务请求,可以是:进程内访问目标可信应用,并通过目标可信应用基于共享链接库调用目标合约方法,在可信执行环境中处理目标事务请求。需要说明的是,由于在虚拟机处理进程内进行目标可信应用的访问,使得目标事务请求的处理过程更加便捷,提升了处理效率。
需要说明的是,S201~S203可以在部署智能合约的时候执行,S204可以在部署智能合约的时候执行,也可以在具备智能合约调用需求的时候执行。
本申请实施例通过将对目标智能合约进行编译,生成链接有可信执行环境的共享链接库,细化为对目标智能合约进行编译,得到静态链接库;将静态链接库链接至目标智能合约所关联的目标可信应用;对链接有静态链接库的目标可信应用进行编译,得到共享链接库,从而完善了共享链接库的生成机制,并且,通过将共享链接库的生成过程与后续执行过程分离,从而将共享链接库的生成过程隔离在可信执行环境之外,避免了资源的无端消耗,实现了资源的合理利用。同时,直接对目标智能合约进行编译和链接,对目标智能合约的代码不做任何处理,使得本申请中的智能合约运行方式能够复用于现有的区块链***,通用性强。
图3是本申请实施例提供的另一种智能合约运行方法的流程图,该方法在上述各技术方案的基础上提供了一种优选实施方式。
如图3所示的一种智能合约运行方法,包括:
S310、编译阶段;
S320、预加载阶段;以及,
S330、运行阶段。
示例性地,编译阶段,包括:
S311、在接收到目标智能合约部署指令时,调用合约编译器,将目标智能合约的合约代码编译成静态链接库。
其中,目标智能合约部署指令可以是在电子设备接入区块链***时,或者在区块链***运行过程中生成。
S312、将静态链接库链接到可信执行环境中与目标智能合约相关联的目标可信应用中;其中,目标可信应用为动态链接库。
S313、对关联有静态链接库的目标可信应用进行编译,得到动态链接库。
示例性地,预加载阶段,包括:
S321、将动态链接库加载到虚拟机内存空间中。
示例性地,运行阶段,包括:
S331、接收基于目标智能合约生成的目标事务请求;
S332、响应于目标事务请求,创建一个目标会话;
S333、初始化目标会话中合约运行时需要的虚拟机内存和全局变量;
S334、在目标会话中,根据目标事务请求中的合约标识所关联的共享链接库,创建目标合约实例;
S335、根据目标事务请求中的方法标识,进程内访问目标可信应用,并在可信执行环境中调用目标合约实例中的目标合约方法;
S336、根据全局变量和目标事务请求中的输入参数,在可信执行环境中执行目标合约方法,得到执行结果;
S337、将执行结果从合约内部复制到目标会话所关联的虚拟机内存中。
本申请实时通过将编译阶段和预加载阶段,与运行阶段分离,仅将运行阶段迁移至可信执行环境,将编译阶段和预加载阶段隔离在可信执行环境以外,采用此种轻量的方式,能够在保证智能合约运行过程的安全性的同时,实现资源的合理利用,避免了资源浪费。另外,本申请无需对智能合约自身代码进行修改,即可实现可信执行环境的连接,使得本申请时提供的智能合约运行方法更具普适性和通用性。
图4是本申请实施例提供的一种智能合约运行装置的结构图,该智能合约运行装置400,包括:目标事务请求获取模块401和目标事务请求执行模块402。
目标事务请求获取模块401,用于获取基于目标智能合约发起的目标事务请求;其中,目标事务请求包括目标智能合约中待调用的目标合约方法;
目标事务请求执行模块402,用于基于共享链接库调用目标合约方法,在可信执行环境中处理目标事务请求;
其中,共享链接库通过如下确定:对目标智能合约进行编译,生成链接有可信执行环境的共享链接库;加载共享链接库。
本申请实施例通过目标事务请求获取模块获取基于目标智能合约发起的目标事务请求,其中目标事务请求包括目标智能合约中待调用的目标合约方法;通过目标事务请求执行模块基于共享链接库调用目标合约方法,在可信执行环境中处理目标事务请求;其中共享链接库通过如下方式确定:对目标智能合约进行编译,生成连接有可信执行环境的共享链接库;加载共享链接库。采用上述技术方案,能够将目标智能合约的运行过程从富执行环境迁移至可信执行环境中,从而提高了目标智能合约执行过程的安全性。同时,仅将虚拟机进行智能合约运行的过程迁移至可信执行环境,将共享链接库的生成和加载过程隔离在可信执行环境之外,采用此种轻量的方式,实现了资源的合理利用,避免了资源的浪费。并且,通过对目标智能合约进行编译,即可实现连接有可信执行环境的共享链接库的生成,无需进行合约内容修改,能够适配现有的区块链***中的智能合约运行方法,通用性好。
进一步地,装置还包括共享链接库生成模块,用于对目标智能合约进行编译,生成链接有可信执行环境的共享链接库,并加载共享链接库;
其中,共享链接库生成模块,具体包括:
静态链接库得到单元,用于对目标智能合约进行编译,得到静态链接库;
静态链接库链接单元,用于将静态链接库链接至与目标智能合约所关联的目标可信应用;
共享链接库得到单元,用于对链接有静态链接库的目标可信应用进行编译,得到共享链接库。
进一步地,所述目标事务请求执行模块402,包括:
进程内访问单元,用于进程内访问所述目标可信应用,并通过所述目标可信应用基于所述共享链接库调用所述目标合约方法,在所述可信执行环境中处理所述目标事务请求。
进一步地,所述共享链接库为动态链接库;所述共享链接库生成模块,包括:
部署指令接收单元,用于在接入区块链***时或在区块链***运行过程中,接收目标智能合约部署指令;
动态链接库生成单元,用于响应于目标智能合约部署指令,对所述目标智能合约进行编译,生成链接有可信执行环境的动态链接库。
进一步地,目标事务请求执行模块402,包括:
目标合约实例创建单元,用于根据所述目标事务请求中的合约标识所关联的共享链接库,创建目标合约实例;
目标合约方法调用单元,用于根据所述目标事务请求中的方法标识,在可信执行环境中调用所述目标合约实例中的目标合约方法。
进一步地,装置还包括:
目标会话创建模块,用于在根据目标事务请求中的合约标识所关联的共享链接库,创建目标合约实例之前,创建目标会话;
目标合约实例创建单元,包括:
目标合约实例创建子单元,用于在目标会话中,根据目标事务请求中的合约标识所关联的共享链接库,创建目标合约实例。
上述产品可执行本发明任意实施例所提供的方法,具备执行方法相应的功能模块和有益效果。
根据本申请的实施例,本申请还提供了一种电子设备和一种可读存储介质。
如图5所示,是实现本申请实施例的智能合约运行方法的电子设备的框图。电子设备旨在表示各种形式的数字计算机,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字处理、蜂窝电话、智能电话、可穿戴设备和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本申请的实现。
如图5所示,该电子设备包括:一个或多个处理器501、存储器502,以及用于连接各部件的接口,包括高速接口和低速接口。各个部件利用不同的总线互相连接,并且可以被安装在公共主板上或者根据需要以其它方式安装。处理器可以对在电子设备内执行的指令进行处理,包括存储在存储器中或者存储器上以在外部输入/输出装置(诸如,耦合至接口的显示设备)上显示GUI的图形信息的指令。在其它实施方式中,若需要,可以将多个处理器和/或多条总线与多个存储器和多个存储器一起使用。同样,可以连接多个电子设备,各个设备提供部分必要的操作(例如,作为服务器阵列、一组刀片式服务器、或者多处理器***)。图5中以一个处理器501为例。
存储器502即为本申请所提供的非瞬时计算机可读存储介质。其中,存储器存储有可由至少一个处理器执行的指令,以使至少一个处理器执行本申请所提供的智能合约运行方法。本申请的非瞬时计算机可读存储介质存储计算机指令,该计算机指令用于使计算机执行本申请所提供的智能合约运行方法。
存储器502作为一种非瞬时计算机可读存储介质,可用于存储非瞬时软件程序、非瞬时计算机可执行程序以及模块,如本申请实施例中的智能合约运行方法对应的程序指令/模块(例如,附图4所示的目标事务请求获取模块401和目标事务请求执行模块402)。处理器501通过运行存储在存储器502中的非瞬时软件程序、指令以及模块,从而执行服务器的各种功能应用以及数据处理,即实现上述方法实施例中的智能合约运行方法。
存储器502可以包括存储程序区和存储数据区,其中,存储程序区可存储操作***、至少一个功能所需要的应用程序;存储数据区可存储实现智能合约运行方法的电子设备的使用所创建的数据等。此外,存储器502可以包括高速随机存取存储器,还可以包括非瞬时存储器,例如至少一个磁盘存储器件、闪存器件、或其他非瞬时固态存储器件。在一些实施例中,存储器502可选包括相对于处理器501远程设置的存储器,这些远程存储器可以通过网络连接至实现智能合约运行方法的电子设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
实现智能合约运行方法的电子设备还可以包括:输入装置503和输出装置504。处理器501、存储器502、输入装置503和输出装置504可以通过总线或者其他方式连接,图5中以通过总线连接为例。
输入装置503可接收输入的数字或字符信息,以及产生与实现智能合约运行方法的电子设备的用户设置以及功能控制有关的键信号输入,例如触摸屏、小键盘、鼠标、轨迹板、触摸板、指示杆、一个或者多个鼠标按钮、轨迹球、操纵杆等输入装置。输出装置504可以包括显示设备、辅助照明装置(例如,LED)和触觉反馈装置(例如,振动电机)等。该显示设备可以包括但不限于,液晶显示器(LCD)、发光二极管(LED)显示器和等离子体显示器。在一些实施方式中,显示设备可以是触摸屏。
此处描述的***和技术的各种实施方式可以在数字电子电路***、集成电路***、专用ASIC(专用集成电路)、计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程***上执行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储***、至少一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储***、该至少一个输入装置、和该至少一个输出装置。
这些计算程序(也称作程序、软件、软件应用、或者代码)包括可编程处理器的机器指令,并且可以利用高级过程和/或面向对象的编程语言、和/或汇编/机器语言来实施这些计算程序。如本文使用的,术语“机器可读介质”和“计算机可读介质”指的是用于将机器指令和/或数据提供给可编程处理器的任何计算机程序产品、设备、和/或装置(例如,磁盘、光盘、存储器、可编程逻辑装置(PLD)),包括,接收作为机器可读信号的机器指令的机器可读介质。术语“机器可读信号”指的是用于将机器指令和/或数据提供给可编程处理器的任何信号。
为了提供与用户的交互,可以在计算机上实施此处描述的***和技术,该计算机具有:用于向用户显示信息的显示装置(例如,CRT(阴极射线管)或者LCD(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给计算机。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入或者、触觉输入)来接收来自用户的输入。
可以将此处描述的***和技术实施在包括后台部件的计算***(例如,作为数据服务器)、或者包括中间件部件的计算***(例如,应用服务器)、或者包括前端部件的计算***(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的***和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算***中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将***的部件相互连接。通信网络的示例包括:局域网(LAN)、广域网(WAN)、互联网和区块链网络。
计算机***可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。服务器可以是云服务器,又称为云计算服务器或云主机,是云计算服务体系中的一项主机产品,以解决了传统物理主机与VPS服务中,存在的管理难度大,业务扩展性弱的缺陷。
根据本申请实施例的技术方案,通过获取基于目标智能合约发起的目标事务请求,其中目标事务请求包括目标智能合约中待调用的目标合约方法;基于共享链接库调用目标合约方法,在可信执行环境中处理目标事务请求;其中共享链接库通过如下方式确定:对目标智能合约进行编译,生成连接有可信执行环境的共享链接库;加载共享链接库。采用上述技术方案,能够将目标智能合约的运行过程从富执行环境迁移至可信执行环境中,从而提高了目标智能合约执行过程的安全性。同时,仅将虚拟机进行智能合约运行的过程迁移至可信执行环境,将共享链接库的生成和加载过程隔离在可信执行环境之外,采用此种轻量的方式,实现了资源的合理利用,避免了资源的浪费。并且,通过对目标智能合约进行编译,即可实现连接有可信执行环境的共享链接库的生成,无需进行合约内容修改,能够适配现有的区块链***中的智能合约运行方法,通用性好。
应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本申请中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现本申请公开的技术方案所期望的结果,本文在此不进行限制。
上述具体实施方式,并不构成对本申请保护范围的限制。本领域技术人员应该明白的是,根据设计要求和其他因素,可以进行各种修改、组合、子组合和替代。任何在本申请的精神和原则之内所作的修改、等同替换和改进等,均应包含在本申请保护范围之内。
Claims (12)
1.一种智能合约运行方法,包括:
获取基于目标智能合约发起的目标事务请求;其中,所述目标事务请求包括所述目标智能合约中待调用的目标合约方法;
基于共享链接库调用所述目标合约方法,在可信执行环境中处理所述目标事务请求;其中,所述共享链接库通过如下确定:对所述目标智能合约进行编译,生成链接有可信执行环境的共享链接库;加载所述共享链接库;
其中,所述对所述目标智能合约进行编译,生成链接有可信执行环境的共享链接库,包括:
对所述目标智能合约进行编译,得到静态链接库;
将所述静态链接库链接至与所述目标智能合约所关联的目标可信应用;
对链接有所述静态链接库的所述目标可信应用进行编译,得到所述共享链接库。
2.根据权利要求1所述的方法,其中,所述基于共享链接库调用所述目标合约方法,在可信执行环境中处理所述目标事务请求,包括:
进程内访问所述目标可信应用,并通过所述目标可信应用基于所述共享链接库调用所述目标合约方法,在所述可信执行环境中处理所述目标事务请求。
3.根据权利要求1所述的方法,其中,所述共享链接库为动态链接库;所述对所述目标智能合约进行编译,生成链接有可信执行环境的共享链接库,包括:
在接入区块链***时或在区块链***运行过程中,接收目标智能合约部署指令;
响应于目标智能合约部署指令,对所述目标智能合约进行编译,生成链接有可信执行环境的动态链接库。
4.根据权利要求1-3任一项所述的方法,其中,所述基于共享链接库调用所述目标合约方法,在可信执行环境中处理所述目标事务请求,包括:
根据所述目标事务请求中的合约标识所关联的共享链接库,创建目标合约实例;
根据所述目标事务请求中的方法标识,在可信执行环境中调用所述目标合约实例中的目标合约方法。
5.根据权利要求4所述的方法,在所述根据所述目标事务请求中的合约标识所关联的所述共享链接库,创建目标合约实例之前,所述方法还包括:
创建目标会话;
所述根据所述目标事务请求中的合约标识所关联的所述共享链接库,创建目标合约实例,包括:
在所述目标会话中,根据所述目标事务请求中的合约标识所关联的所述共享链接库,创建目标合约实例。
6.一种智能合约运行装置,包括:
目标事务请求获取模块,用于获取基于目标智能合约发起的目标事务请求;其中,所述目标事务请求包括所述目标智能合约中待调用的目标合约方法;
目标事务请求执行模块,用于基于共享链接库调用所述目标合约方法,在可信执行环境中处理所述目标事务请求;
其中,所述共享链接库通过如下确定:对所述目标智能合约进行编译,生成链接有可信执行环境的共享链接库;加载所述共享链接库;
其中,所述装置还包括:
共享链接库生成模块,用于对所述目标智能合约进行编译,生成链接有可信执行环境的共享链接库,并加载所述共享链接库;
其中,所述共享链接库生成模块,具体包括:
静态链接库得到单元,用于对所述目标智能合约进行编译,得到静态链接库;
静态链接库链接单元,用于将所述静态链接库链接至与所述目标智能合约所关联的目标可信应用;
共享链接库得到单元,用于对链接有所述静态链接库的所述目标可信应用进行编译,得到所述共享链接库。
7.根据权利要求6所述的装置,其中,所述目标事务请求执行模块,包括:
进程内访问单元,用于进程内访问所述目标可信应用,并通过所述目标可信应用基于所述共享链接库调用所述目标合约方法,在所述可信执行环境中处理所述目标事务请求。
8.根据权利要求6所述的装置,其中,所述共享链接库为动态链接库;所述共享链接库生成模块,包括:
部署指令接收单元,用于在接入区块链***时或在区块链***运行过程中,接收目标智能合约部署指令;
动态链接库生成单元,用于响应于目标智能合约部署指令,对所述目标智能合约进行编译,生成链接有可信执行环境的动态链接库。
9.根据权利要求6-8任一项所述的装置,其中,所述目标事务请求执行模块,包括:
目标合约实例创建单元,用于根据所述目标事务请求中的合约标识所关联的共享链接库,创建目标合约实例;
目标合约方法调用单元,用于根据所述目标事务请求中的方法标识,在可信执行环境中调用所述目标合约实例中的目标合约方法。
10.根据权利要求9所述的装置,所述装置还包括:
目标会话创建模块,用于在所述根据所述目标事务请求中的合约标识所关联的共享链接库,创建目标合约实例之前,创建目标会话;
所述目标合约实例创建单元,包括:
目标合约实例创建子单元,用于在所述目标会话中,根据所述目标事务请求中的合约标识所关联的共享链接库,创建目标合约实例。
11.一种电子设备,包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行权利要求1-5中任一项所述的一种智能合约运行方法。
12.一种存储有计算机指令的非瞬时计算机可读存储介质,所述计算机指令用于使所述计算机执行权利要求1-5中任一项所述的一种智能合约运行方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010683529.3A CN111563253B (zh) | 2020-07-16 | 2020-07-16 | 智能合约运行方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010683529.3A CN111563253B (zh) | 2020-07-16 | 2020-07-16 | 智能合约运行方法、装置、设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111563253A CN111563253A (zh) | 2020-08-21 |
CN111563253B true CN111563253B (zh) | 2020-11-03 |
Family
ID=72071298
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010683529.3A Active CN111563253B (zh) | 2020-07-16 | 2020-07-16 | 智能合约运行方法、装置、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111563253B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111770206B (zh) * | 2020-08-31 | 2020-12-29 | 支付宝(杭州)信息技术有限公司 | 一种部署智能合约的方法、区块链节点和存储介质 |
CN112215682A (zh) * | 2020-10-29 | 2021-01-12 | 支付宝(杭州)信息技术有限公司 | 一种基于区块链的电商直播销售事务处理方法和*** |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105787353A (zh) * | 2014-12-17 | 2016-07-20 | 联芯科技有限公司 | 可信应用管理***及可信应用的加载方法 |
CN111095256A (zh) * | 2019-04-26 | 2020-05-01 | 阿里巴巴集团控股有限公司 | 在可信执行环境中安全地执行智能合约操作 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100492286C (zh) * | 2007-02-02 | 2009-05-27 | 浙江大学 | 一种嵌入式***开发平台图形库的性能优化设计方法 |
WO2018164955A1 (en) * | 2017-03-06 | 2018-09-13 | Rivetz Corp. | Device enrollment protocol |
WO2019185710A1 (en) * | 2018-03-29 | 2019-10-03 | NEC Laboratories Europe GmbH | Method and system of preserving privacy for usage of lightweight blockchain clients |
CN110032883B (zh) * | 2019-01-31 | 2020-05-29 | 阿里巴巴集团控股有限公司 | 区块链中实现隐私保护的方法、***和节点 |
-
2020
- 2020-07-16 CN CN202010683529.3A patent/CN111563253B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105787353A (zh) * | 2014-12-17 | 2016-07-20 | 联芯科技有限公司 | 可信应用管理***及可信应用的加载方法 |
CN111095256A (zh) * | 2019-04-26 | 2020-05-01 | 阿里巴巴集团控股有限公司 | 在可信执行环境中安全地执行智能合约操作 |
Also Published As
Publication number | Publication date |
---|---|
CN111563253A (zh) | 2020-08-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20210208951A1 (en) | Method and apparatus for sharing gpu, electronic device and readable storage medium | |
CN109032706B (zh) | 智能合约执行方法、装置、设备和存储介质 | |
CN110806923B (zh) | 一种区块链任务的并行处理方法、装置、电子设备和介质 | |
US20210191780A1 (en) | Method and apparatus for processing development machine operation task, device and storage medium | |
US11520606B2 (en) | Dynamic generation of user interface components based on hierarchical component factories | |
JP2008135035A5 (zh) | ||
CN111563253B (zh) | 智能合约运行方法、装置、设备及存储介质 | |
CN111782181A (zh) | 代码生成方法、装置、电子设备以及存储介质 | |
CN111783952A (zh) | 配置方法、装置、***、电子设备以及存储介质 | |
CN110704162A (zh) | 物理机共享容器镜像的方法、装置、设备及存储介质 | |
US20210263912A1 (en) | Method for data processing based on smart contract and device | |
CN110908675B (zh) | 运行环境获取方法、装置和电子设备 | |
CN110727504B (zh) | 代码执行方法、装置和渲染设备 | |
CN111767059B (zh) | 深度学习模型的部署方法、装置、电子设备和存储介质 | |
CN112328301A (zh) | 维护运行环境一致性的方法、装置、存储介质及电子设备 | |
US20130138418A1 (en) | Modeling of Cross System Scenarios | |
US10679184B2 (en) | Automated context-based collaborative workspace dynamic creation | |
CN116685946A (zh) | 在不停止应用的执行的情况下的更新的共享库的重新加载 | |
CN113254043A (zh) | Web前端项目处理方法、装置、电子设备及存储介质 | |
CN111767149A (zh) | 调度方法、装置、设备及存储设备 | |
CN114661274A (zh) | 用于生成智能合约的方法和装置 | |
US11275827B2 (en) | Multi-tenant actor systems with web assembly | |
US10761914B2 (en) | Replacing generated procedure calls with generated inter-process communication | |
CN111857825A (zh) | 指令执行方法、装置、电子设备和计算机可读存储介质 | |
CN111614494B (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |