一种区块链的智能合约实现方法、装置、设备和介质制造方法及图纸

技术编号:25345743 阅读:19 留言:0更新日期:2020-08-21 17:04
本申请公开了一种区块链的智能合约实现方法、装置、设备和介质,涉及区块链技术领域,可应用于云计算和云服务。具体实现方案为:在产生常驻智能合约的启动条件时,为所述常驻智能合约创建常驻进程,并通过所述常驻进程创建虚拟机;通过所述虚拟机将所述常驻智能合约的代码加载到内存中;通过所述虚拟机的跨合约调用接口,接收正常智能合约在区块生成周期内产生的数据访问请求;通过所述虚拟机执行所述常驻智能合约以处理所述数据访问请求,将数据访问结果返回给所述正常智能合约;其中,所述常驻智能合约的常驻进程在内存中的存活周期大于一个区块生成周期。本申请通过设置常驻智能合约,提高了数据处理速度、减少了计算和读写资源的消耗。

【技术实现步骤摘要】
一种区块链的智能合约实现方法、装置、设备和介质
本申请实施例涉及计算机
,具体涉及区块链技术。
技术介绍
区块链系统中可包括智能合约系统,区块链系统的主程序通过调用智能合约来实现各种功能。区块链主程序调用智能合约的过程类似于WEB服务器调用外部程序所采用的公共网关接口(CommonGatewayInterface,CGI)模型。具体的,在主程序调用智能合约的一次调用生命周期内,该智能合约有完整的数据流,从磁盘加载数据、执行数据计算、而后将计算结果写回磁盘。调用生命周期结束后,智能合约从内存中清空数据。但是,上述的智能合约实现方式,已经不适用于区块链日益复杂的业务需求,导致数据处理效率低。
技术实现思路
本申请实施例提供了一种区块链的智能合约实现方法、装置、设备和介质。根据本申请的一方面,提供了一种区块链的智能合约实现方法,应用于区块链节点,所述方法包括:在产生常驻智能合约的启动条件时,为所述常驻智能合约创建常驻进程,并通过所述常驻进程创建虚拟机;通过所述虚拟机将所述常驻智能合约的代码加载到内存中;通过所述虚拟机的跨合约调用接口,接收正常智能合约在区块生成周期内产生的数据访问请求;通过所述虚拟机执行所述常驻智能合约以处理所述数据访问请求,将数据访问结果返回给所述正常智能合约;其中,所述正常智能合约的进程在内存中的存活周期为一个区块生成周期,所述常驻智能合约的常驻进程在内存中的存活周期大于一个区块生成周期。根据本申请的另一方面,提供了一种区块链的智能合约实现装置,配置于区块链节点中,所述装置包括:进程创建模块,用于在产生常驻智能合约的启动条件时,为所述常驻智能合约创建常驻进程,并通过所述常驻进程创建虚拟机;合约加载模块,用于通过所述虚拟机将所述常驻智能合约的代码加载到内存中;合约调用模块,用于通过所述虚拟机的跨合约调用接口,接收正常智能合约在区块生成周期内产生的数据访问请求;结果返回模块,用于通过所述虚拟机执行所述常驻智能合约以处理所述数据访问请求,将数据访问结果返回给所述正常智能合约;其中,所述正常智能合约的进程在内存中的存活周期为一个区块生成周期,所述常驻智能合约的常驻进程在内存中的存活周期大于一个区块生成周期。根据本申请的再一方面,提供了一种电子设备,包括:至少一个处理器;以及与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行本申请任意实施例所提供的区块链的智能合约实现方法。根据本申请的又一方面,提供了存储有计算机指令的非瞬时计算机可读存储介质,其中,所述计算机指令用于使所述计算机执行本申请任意实施例所提供的区块链的智能合约实现方法。根据本申请的技术解决了智能合约反复启动和退出导致资源消耗大的问题。应当理解,本部分所描述的内容并非旨在标识本申请的实施例的关键或重要特征,也不用于限制本申请的范围。本申请的其它特征将通过以下的说明书而变得容易理解。附图说明附图用于更好地理解本方案,不构成对本申请的限定。其中:图1为本申请实施例提供的一种区块链的智能合约实现方法的流程图;图2为本申请实施例提供的另一种区块链的智能合约实现方法的流程图;图3为本申请实施例提供的一种区块链的智能合约实现装置的结构框图;图4是用来实现本申请实施例的区块链的智能合约实现方法的电子设备的框图。具体实施方式以下结合附图对本申请的示范性实施例做出说明,其中包括本申请实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本申请的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。图1为本申请实施例提供的一种区块链的智能合约实现方法的流程图,该方法适用于在区块链系统的运行过程中调用智能合约来处理区块数据的情况。该方法可以由区块链的智能合约实现装置来执行,该装置可以采用软件和/或硬件的形式来实现,该装置可集成于能够作为区块链节点的电子设备中,即该方法可以应用于区块链节点,由区块链节点来执行。如图1所示,所述方法包括:S110、在产生常驻智能合约的启动条件时,为所述常驻智能合约创建常驻进程,并通过所述常驻进程创建虚拟机;S120、通过所述虚拟机将所述常驻智能合约的代码加载到内存中;智能合约是可以基于虚拟机运行的代码,能够在代码运行的过程中完成一定的功能。当调用智能合约时,会为智能合约创建进程并为进程分配内存空间等可供运行的资源,在进程中构建虚拟机,基于虚拟机来加载智能合约的代码并执行。常驻智能合约是相对于正常智能合约而言的一种特殊的智能合约。其中,所述正常智能合约的进程在内存中的存活周期为一个区块生成周期,所述常驻智能合约的常驻进程在内存中的存活周期大于一个区块生成周期。区块链系统按照区块生成周期,顺序处理该区块的事务请求,事务请求是区块链系统中承载用户业务需求的请求内容。通常,事务请求可通过调用至少一个智能合约来实现。在当前区块生成周期开始时,区块链的主程序会根据事务请求来调用智能合约,正常智能合约通常是在当前区块生成周期内、进行当前区块中事务请求的处理过程中被调用的,从而完成事务请求中的某种功能。在当前区块处理完成后,则正常智能合约的功能也执行完毕,结束调用,主程序通知正常智能合约退出。所以,正常智能合约的进程的存活周期为一个区块生成周期。常驻智能合约的常驻进程在内存中的存活周期则大于一个区块生成周期,可选的是常驻智能合约的常驻进程能够持续地的驻留在内存中,不限于在产生一个区块的过程中被启用后退出,而是能够在跨越区块的过程被反复的调用。本实施例中,具体是在产生常驻智能合约的启动条件时,为所述常驻智能合约创建常驻进程,并通过所述常驻进程创建虚拟机。产生常驻智能合约的启动条件可以有多种情况,可选的是在下述至少一种情况下都可以启动常驻智能合约:当区块链系统在本机区块链节点启动时,产生所述常驻智能合约的启动条件;当所述常驻智能合约第一次被调用时,产生所述常驻智能合约的启动条件。即,当部署有区块链系统的本机区块链节点开始启动运行时,就首先启动常驻智能合约的运行,可以是一个或多个常驻智能合约,相当于是预加载常驻智能合约,做好后续调用常驻智能合约的准备,以便在真正需要调用时能够快速通过常驻智能合约进行数据访问和数据处理。或者,还可以在第一次需要调用常驻智能合约的时候进行启动,即按需启动常驻智能合约,启动之后可以常驻内存,方便后续调用时能够迅速进行数据访问和数据处理。S130、通过所述虚拟机的跨合约调用接口,接收正常智能合约在区块生成周期内产生的数据访问请求;常驻智能合约所实现的功能,一般是需要高频访问的数据,或者需要跨区块处理的数据。本文档来自技高网...

【技术保护点】
1.一种区块链的智能合约实现方法,应用于区块链节点,所述方法包括:/n在产生常驻智能合约的启动条件时,为所述常驻智能合约创建常驻进程,并通过所述常驻进程创建虚拟机;/n通过所述虚拟机将所述常驻智能合约的代码加载到内存中;/n通过所述虚拟机的跨合约调用接口,接收正常智能合约在区块生成周期内产生的数据访问请求;/n通过所述虚拟机执行所述常驻智能合约以处理所述数据访问请求,将数据访问结果返回给所述正常智能合约;/n其中,所述正常智能合约的进程在内存中的存活周期为一个区块生成周期,所述常驻智能合约的常驻进程在内存中的存活周期大于一个区块生成周期。/n

【技术特征摘要】
1.一种区块链的智能合约实现方法,应用于区块链节点,所述方法包括:
在产生常驻智能合约的启动条件时,为所述常驻智能合约创建常驻进程,并通过所述常驻进程创建虚拟机;
通过所述虚拟机将所述常驻智能合约的代码加载到内存中;
通过所述虚拟机的跨合约调用接口,接收正常智能合约在区块生成周期内产生的数据访问请求;
通过所述虚拟机执行所述常驻智能合约以处理所述数据访问请求,将数据访问结果返回给所述正常智能合约;
其中,所述正常智能合约的进程在内存中的存活周期为一个区块生成周期,所述常驻智能合约的常驻进程在内存中的存活周期大于一个区块生成周期。


2.根据权利要求1所述的方法,其中,产生常驻智能合约的启动条件包括下述至少一项:
当区块链系统在本机区块链节点启动时,产生所述常驻智能合约的启动条件;
当所述常驻智能合约第一次被调用时,产生所述常驻智能合约的启动条件。


3.根据权利要求1所述的方法,其中,所述方法还包括:
在产生常驻智能合约的关闭条件时,将所述常驻智能合约在内存中存储的数据固化写入磁盘,关闭分配给所述常驻智能合约的虚拟机的进程和内存空间。


4.根据权利要求3所述的方法,其中,产生常驻智能合约的关闭条件包括下述至少一项:
在区块链系统在本机区块链节点关闭时,产生所述常驻智能合约的关闭条件;
在本机区块链节点的运行资源产生降级需求时,产生所述常驻智能合约的关闭条件,其中,所述运行资源包括内存资源或计算资源。


5.根据权利要求1所述的方法,其中,所述方法还包括:
在产生常驻智能合约的挂起条件时,为所述常驻进程保留进程句柄,将所述常驻智能合约在内存中存储的数据写入磁盘中的临时存储区,关闭分配给所述常驻智能合约的虚拟机的进程和内存空间。


6.根据权利要求1所述的方法,其中,所述跨合约调用接口基于进程间通信协议实现。


7.根据权利要求1-6任一所述的方法,其中,还包括:
在启动进行当前区块处理时,将所述当前区块的区块依赖数据传输给所述常驻进程,以更新所述常驻进程内存空间中的数据,与当前区块中的数据一致。


8.根据权利要求1-6任一所述的方法,其中,通过所述虚拟机的跨合约调用接口,接收正常智能合约在区块生成周期内产生的数据访问请求的同时,还包括:
通过所述跨合约调用接口获取正常智能合约传输的区块依赖数据并更新至所述常驻进程的内存空间中,以维持常驻智能合约内存空间中的数据与当前区块中的数据一致。


9.根据权利要求1-6任一所述的方法,其中,所述数据访问请求的访问对象包括区块链账户信息、事务请求计数值、区块计数值、和跨区块数据。


10.根据权利要求1-6任一所述的方法,其中,所述方法还包括:
在产生区块回滚事件时,通过区块链系统的主程序通知所述常驻进程,根据至少一个回滚区块的事务请求进行回滚操作,以更新所述常驻智能合约内存空间中的数据;或
在产生区块回滚事件时,通过区块链系统的主程序通知所述常驻进程关闭并重新启动,以从磁盘中重新加载回滚后的区块数据。


11.一种区块链的智能合约实现装置,配置于区块链节点中,所述装置包括:
进程创建模块,用于在产生常驻智能合约的启动条件时,为所述常驻智能合约创建常驻进程,并通过所述常驻进程创建虚拟机;
合约加载模块,用于通过所述虚拟机将所述常驻智能合约的代码加载到内存中;
合约调用模块,用于通过所述虚拟机的跨合约调用接口,接收正常智能合约在...

【专利技术属性】
技术研发人员:肖伟
申请(专利权)人:百度在线网络技术北京有限公司
类型:发明
国别省市:北京;11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1