【技术实现步骤摘要】
一种区块链的智能合约实现方法、装置、设备和介质
本申请实施例涉及计算机
,具体涉及区块链技术。
技术介绍
区块链系统中可包括智能合约系统,区块链系统的主程序通过调用智能合约来实现各种功能。区块链主程序调用智能合约的过程类似于WEB服务器调用外部程序所采用的公共网关接口(CommonGatewayInterface,CGI)模型。具体的,在主程序调用智能合约的一次调用生命周期内,该智能合约有完整的数据流,从磁盘加载数据、执行数据计算、而后将计算结果写回磁盘。调用生命周期结束后,智能合约从内存中清空数据。但是,上述的智能合约实现方式,已经不适用于区块链日益复杂的业务需求,导致数据处理效率低。
技术实现思路
本申请实施例提供了一种区块链的智能合约实现方法、装置、设备和介质。根据本申请的一方面,提供了一种区块链的智能合约实现方法,应用于区块链节点,所述方法包括:在产生常驻智能合约的启动条件时,为所述常驻智能合约创建常驻进程,并通过所述常驻进程创建虚拟机;通过所述虚拟机将所述常驻智能合约的代码加载到内存中;通过所述虚拟机的跨合约调用接口,接收正常智能合约在区块生成周期内产生的数据访问请求;通过所述虚拟机执行所述常驻智能合约以处理所述数据访问请求,将数据访问结果返回给所述正常智能合约;其中,所述正常智能合约的进程在内存中的存活周期为一个区块生成周期,所述常驻智能合约的常驻进程在内存中的存活周期大于一个区块生成周期。根据本申请的另一方面,提供 ...
【技术保护点】
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
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。