区块链数据处理方法、装置、设备及计算机可读存储介质制造方法及图纸

技术编号:38970972 阅读:13 留言:0更新日期:2023-09-28 09:34
本申请的实施例公开了一种区块链数据处理方法、装置、设备及计算机可读存储介质。该方法包括:创建智能合约对应的合约虚拟机以及共享虚拟机;当合约虚拟机接收到针对智能合约的调用请求时,向共享虚拟机发送合约操作信息;在共享虚拟机中响应于合约操作信息,对智能合约的合约代码执行运行处理,得到合约运行结果,并将合约运行结果返回至合约虚拟机。通过该方法,可以提高区块链数据处理的效率。可以提高区块链数据处理的效率。可以提高区块链数据处理的效率。

【技术实现步骤摘要】
区块链数据处理方法、装置、设备及计算机可读存储介质


[0001]本申请涉及区块链
,具体涉及一种区块链数据处理方法、装置、设备和计算机可读存储介质。

技术介绍

[0002]智能合约是一种运行在区块链上的计算机程序,它可以自动执行合同条款并验证其执行结果,从而实现去中心化的信任和执行。
[0003]相关技术中,在每个区块链节点内,每创建一个智能合约都需要相应创建对应的虚拟机用来存储该智能合约的相关信息,例如合约地址、合约代码和一些其它元数据等,并且智能合约的具体执行也是通过虚拟机来完成。虚拟机在执行合约代码时需要消耗区块链节点较多的计算和存储资源,当区块链节点创建的智能合约过多时,需要相应创建大量的虚拟机,占用了大量的节点资源,若这些虚拟机同时执行智能合约,容易导致区块链节点的处理压力过大引发卡顿甚至宕机问题,若区块链节点无法及时执行完大量的智能合约,还会造成区块链网络拥堵,影响区块链网络的性能。
[0004]因此,如何提高区块链节点内的智能合约执行的效率是亟待解决的问题。

技术实现思路

[0005]为解决上述技术问题,本申请的实施例提供了一种区块链数据处理方法、装置、设备以及计算机可读存储介质,可以提高区块链数据处理的效率。
[0006]其中,本申请所采用的技术方案为:在本申请的一个实施例中,提供了一种区块链数据处理方法,包括:创建智能合约对应的合约虚拟机以及共享虚拟机;当所述合约虚拟机接收到针对所述智能合约的调用请求时,向所述共享虚拟机发送合约操作信息;在所述共享虚拟机中响应于所述合约操作信息,对所述智能合约的合约代码执行运行处理,得到合约运行结果,并将所述合约运行结果返回至所述合约虚拟机。
[0007]在本申请的一个实施例中,提供了一种区块链数据处理设备,包括:创建单元,用于创建智能合约对应的合约虚拟机;所述创建单元,还用于若未检测到专用于执行所述智能合约的共享虚拟机,则进行所述共享虚拟机的创建;收发单元,用于若检测到所述共享虚拟机,则当所述合约虚拟机接收到针对所述智能合约的调用请求时,向所述共享虚拟机发送合约操作信息;处理单元,用于在所述共享虚拟机中响应于所述合约操作信息,对所述智能合约的合约代码执行运行处理,得到合约运行结果,并将所述合约运行结果返回至所述合约虚拟机。
[0008]在本申请的一个实施例中,基于前述方案,所述收发单元,还用于若检测到专用于
执行所述智能合约的共享虚拟机,则当所述合约虚拟机接收到针对所述智能合约的调用请求时,向所述共享虚拟机发送合约操作信息;所述处理单元,还用于在所述共享虚拟机中响应于所述合约操作信息,对所述智能合约的合约代码执行运行处理,得到合约运行结果,并将所述合约运行结果返回至所述合约虚拟机。
[0009]在本申请的一个实施例中,基于前述方案,所述收发单元,还用于在所述共享虚拟机中并发接收多个合约虚拟机分别发送的合约操作信息;基于接收到的多个合约操作信息确定同一合约代码存储地址,并基于所述合约代码存储地址获取对应的合约代码;基于所述多个合约操作信息并发运行所述合约代码,得到多个合约运行结果,并向所述多个合约虚拟机返回相应的合约运行结果。
[0010]在本申请的一个实施例中,基于前述方案,所述处理单元,还用于基于所述合约虚拟机的数量和预设线程数量,在所述共享虚拟机的运行进程中对用于运行所述合约代码的多个线程进行协程的分配;利用所述运行进程中包含的多个线程,基于多个合约操作信息对所述合约代码进行并发运行处理,得到各个合约操作信息所分别对应的合约运行结果。
[0011]在本申请的一个实施例中,基于前述方案,所述处理单元,还用于基于所述多个合约虚拟机并发合约操作信息的数量确定出并发量等级;处理单元,用于基于所述并发量等级,在所述运行进程中对所述预设线程数量的线程进行协程的分配。
[0012]在本申请的一个实施例中,基于前述方案,所述处理单元,还用于若所述并发量等级为第一预设并发量等级,则直接分配所述预设线程数量的线程用于所述合约代码的并发运行处理。
[0013]在本申请的一个实施例中,基于前述方案,所述处理单元,还用于若所述并发量等级表征为第二预设并发量等级,则对所述预设线程数量的线程中的部分线程分别分配第一数量的协程;其中,所述第二预设并发量等级所表征的并发量大于所述第一预设并发量等级所表征的并发量。
[0014]在本申请的一个实施例中,基于前述方案,所述处理单元,还用于若所述并发量等级表征为第三预设并发量等级,则基于所述合约虚拟机的数量和所述预设线程数量确定在各个线程中配置的协程对应的第二数量;在各个线程中分别分配所述第二数量的协程。
[0015]在本申请的一个实施例中,基于前述方案,所述处理单元,还用于在各个线程中基于合约操作信息包含的已授权功能标识,从所述合约代码包含的多个合约功能中确定出所述已授权功能标识所对应的已授权功能;基于所述已授权功能对所述合约代码进行更新处理,得到更新后的合约代码;将所述合约操作信息输入到所述更新后的合约代码中进行运行处理,得到相应的合约运行结果。
[0016]在本申请的一个实施例中,基于前述方案,所述处理单元,还用于在所述合约虚拟机中基于所述调用请求生成所述合约操作信息;所述收发单元,还用于基于所述合约虚拟机中保存的所述共享虚拟机地址向所述共享虚拟机发送所述合约操作信息。
[0017]在本申请的一个实施例中,基于前述方案,所述处理单元,还用于检测发起所述调用请求的客户端所属的客户端类型;基于所述调用请求中包含的申请合约功能和所述客户端类型确定所述客户端具备的合约功能使用权限;基于所述客户端具备的合约功能使用权限生成相应的合约操作信息。
[0018]在本申请的一个实施例中,基于前述方案,获取单元,用于获取访问控制列表,所
述访问控制列表中包含不同的客户端类型所具备使用权限的合约功能;所述处理单元,还用于基于所述访问控制列表和所述调用请求中包含的申请合约功能进行匹配,得到所述客户端类型所具备使用权限的合约功能。
[0019]在本申请的一个实施例中,还提供了一种区块链节点,所述节点配置有合约虚拟机和共享虚拟机,其中:所述合约虚拟机接收客户端发送的调用请求,基于所述调用请求生成合约操作信息,并向共享虚拟机发送所述合约操作信息;所述共享虚拟机并发接收多个合约虚拟机分别发送的合约操作信息,基于接收到的多个合约操作信息确定同一合约代码存储地址,并基于所述合约代码存储地址获取对应的合约代码;所述共享虚拟机基于所述多个合约操作信息并发运行所述合约代码,相应得到多个合约运行结果,并向所述多个合约虚拟机返回相应的合约运行结果;所述合约虚拟机接收所述共享虚拟机相应返回的合约运行结果,并对所述合约运行结果执行上链处理。
[0020]在本申请的一个实施例中,提供了一种区块链数据处理设备,包括处理器及存储器,存储器上存储有计算机可读指令,计算机可读指令被处理器执行时实现如上的区块链数据处理方法。
[0021]在本申请的一个实施例本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种区块链数据处理方法,其特征在于,包括:创建智能合约对应的合约虚拟机以及共享虚拟机;当所述合约虚拟机接收到针对所述智能合约的调用请求时,向所述共享虚拟机发送合约操作信息;在所述共享虚拟机中响应于所述合约操作信息,对所述智能合约的合约代码执行运行处理,得到合约运行结果,并将所述合约运行结果返回至所述合约虚拟机。2.根据权利要求1所述的方法,其特征在于,所述方法还包括:若检测到专用于执行所述智能合约的共享虚拟机,则当所述合约虚拟机接收到针对所述智能合约的调用请求时,向所述共享虚拟机发送合约操作信息;在所述共享虚拟机中响应于所述合约操作信息,对所述智能合约的合约代码执行运行处理,得到合约运行结果,并将所述合约运行结果返回至所述合约虚拟机。3.根据权利要求1或2所述的方法,其特征在于,所述在所述共享虚拟机中响应于所述合约操作信息,对所述智能合约的合约代码执行运行处理,得到合约运行结果,并将所述合约运行结果返回至所述合约虚拟机,包括:在所述共享虚拟机中并发接收多个合约虚拟机分别发送的合约操作信息;基于接收到的多个合约操作信息确定同一合约代码存储地址,并基于所述合约代码存储地址获取对应的合约代码;基于所述多个合约操作信息并发运行所述合约代码,得到多个合约运行结果,并向所述多个合约虚拟机返回相应的合约运行结果。4.根据权利要求3所述的方法,其特征在于,所述基于所述多个合约操作信息并发运行所述合约代码,得到多个合约运行结果,包括:基于所述合约虚拟机的数量和预设线程数量,在共享虚拟机的运行进程中对用于运行所述合约代码的多个线程进行协程的分配;利用所述运行进程中包含的多个线程,基于多个合约操作信息对所述合约代码进行并发运行处理,得到各个合约操作信息所分别对应的合约运行结果。5.根据权利要求4所述的方法,其特征在于,所述基于所述合约虚拟机的数量和预设线程数量,在所述共享虚拟机的运行进程中对用于运行所述合约代码的多个线程进行协程的分配,包括:基于所述多个合约虚拟机并发合约操作信息的数量确定出并发量等级;基于所述并发量等级,在所述运行进程中对所述预设线程数量的线程进行协程的分配。6.根据权利要求5所述的方法,其特征在于,所述基于所述并发量等级,在所述运行进程中对所述预设线程数量的线程进行协程的分配,包括:若所述并发量等级为第一预设并发量等级,则直接分配所述预设线程数量的线程用于所述合约代码的并发运行处理。7.根据权利要求6所述的方法,其特征在于,所述基于所述并发量等级,在所述运行进程中对所述预设线程数量的线程进行协程的分配,包括:若所述并发量等级表征为第二预设并发量等级,则对所述预设线程数量的线程中的部分线程分别分配第一数量的协程;其中,所述第二预设并发量等级所表征的并发量大于所
述第一预设并发量等级所表征的并发量。8.根据权利要求7所述的方法,其特征在于,所述基于所述并发量等级,在所述运行进程中对所述预设线程数量的线程进行协程的分配,包括:若所述并发量等级表征为第三预设并发量等级,则基于所述合约虚拟机的数量和所述预设线程数量确定在各个线程中配置的协程对应的第二数量;在各个线程中分别分配所述第二数量的协程。9.根据权利要求4所述的方法,其特征在于,所述利用...

【专利技术属性】
技术研发人员:张凤双
申请(专利权)人:腾讯科技深圳有限公司
类型:发明
国别省市:

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

1