合约动态库的配置及加载方法、计算机设备和存储介质技术

技术编号:32292367 阅读:14 留言:0更新日期:2022-02-12 20:02
本发明专利技术提供一种合约动态库的配置及加载方法、计算机设备和存储介质,该方法包括:在区块链虚拟机编译器中增加动态库加载函数的执行功能;执行第一动态库配置交易,存储第一合约的第一动态库、生成第一动态库的第一调用地址并保存;通过第一合约执行第一交易,在需要调用第一动态库中的函数时通过动态库加载函数和第一调用地址加载第一动态库以完成第一交易的执行。本发明专利技术通过在区块链虚拟机编译器中增加动态库加载函数的执行功能,同时在存储动态库时定义并存储动态库的调用地址,从而使得合约在需要调用动态库中的函数时可以通过动态库加载函数和相应的调用地址加载相应的动态库,最终实现了支持开发者对已部署在区块链上的合约的动态配置。链上的合约的动态配置。链上的合约的动态配置。

【技术实现步骤摘要】
合约动态库的配置及加载方法、计算机设备和存储介质


[0001]本申请涉及区块链
,具体涉及一种合约动态库的配置及加载方法、计算机设备和存储介质。

技术介绍

[0002]当前的区块链系统中,合约缺乏基础组件以及相应的动态部署机制,当开发者需要为已经部署在区块链上的合约添加一些容器或复杂的算法功能时,区块链节点需要重新进行编译安装,导致开发者在修改合约时非常不便。

技术实现思路

[0003]鉴于现有技术中的上述缺陷或不足,期望提供一种支持开发者动态配置已部署在区块链上的合约的合约动态库的配置及加载方法、计算机设备和存储介质。
[0004]第一方面,本专利技术提供一种适用于区块链节点的合约动态库的配置及加载方法,包括:
[0005]在区块链虚拟机编译器中增加动态库加载函数的执行功能;
[0006]执行第一动态库配置交易,存储第一合约的第一动态库、生成第一动态库的第一调用地址并保存;
[0007]通过第一合约执行第一交易,在需要调用第一动态库中的函数时通过动态库加载函数和第一调用地址加载第一动态库以完成第一交易的执行。
[0008]第二方面,本专利技术还提供一种计算机设备,包括一个或多个处理器和存储器,其中存储器包含可由该一个或多个处理器执行的指令以使得该一个或多个处理器执行根据本专利技术各实施例提供的合约动态库的配置及加载方法。
[0009]第三方面,本专利技术还提供一种存储有计算机程序的存储介质,该计算机程序使计算机执行根据本专利技术各实施例提供的合约动态库的配置及加载方法。
[0010]本专利技术诸多实施例提供的合约动态库的配置及加载方法、计算机设备和存储介质通过在区块链虚拟机编译器中增加动态库加载函数的执行功能,同时在存储动态库时定义并存储动态库的调用地址,从而使得合约在需要调用动态库中的函数时可以通过动态库加载函数和相应的调用地址加载相应的动态库,最终实现了支持开发者对已部署在区块链上的合约的动态配置。
附图说明
[0011]通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本申请的其它特征、目的和优点将会变得更明显:
[0012]图1为本专利技术一实施例提供的一种合约动态库的配置及加载方法的流程图。
[0013]图2为本专利技术一实施例提供的一种计算机设备的结构示意图。
具体实施方式
[0014]下面结合附图和实施例对本申请作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释相关专利技术,而非对该专利技术的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与专利技术相关的部分。
[0015]需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本申请。
[0016]图1为本专利技术一实施例提供的一种合约动态库的配置及加载方法的流程图。
[0017]如图1所示,在本实施例中,本专利技术提供一种适用于区块链节点的合约动态库的配置及加载方法,包括:
[0018]S11:在区块链虚拟机编译器中增加动态库加载函数的执行功能;
[0019]S13:执行第一动态库配置交易,存储第一合约的第一动态库、生成第一动态库的第一调用地址并保存;
[0020]S15:通过第一合约执行第一交易,在需要调用第一动态库中的函数时通过动态库加载函数和第一调用地址加载第一动态库以完成第一交易的执行。
[0021]具体地,以下以开发者甲通过图1所示的方法配置一个已部署在区块链上的合约为例,进行示例性的阐述。
[0022]首先,在进行合约的动态配置之前,需要改造当前的区块链系统的区块链虚拟机编译器:
[0023]在步骤S11中,区块链节点部署修改后的区块链虚拟机编译器,该修改后的区块链虚拟机编译器新增了动态库加载函数DLCall的执行功能。
[0024]具体地,动态库加载函数DLCall用于根据动态库的调用地址加载动态库并进一步调用动态库中的函数,本领域技术人员可以理解如何实现该函数的执行功能,此处不再对其具体实现部分进行赘述。
[0025]开发者甲在为已部署的合约Contract_A增加新的功能模块时,将新功能模块的5个函数f1

f5编译为Contract_A的一个动态库S
A1
,开发者甲的用户端在需要发布该合约及动态库时,打包生成动态库配置交易tx1并发送至区块链网络。
[0026]在步骤S13中,区块链节点执行动态库配置交易tx1,存储存储合约Contract_A的动态库S
A1
、生成动态库S
A1
的调用地址addr1并保存。
[0027]以用户乙的用户端发送一笔需要调用函数f3的交易tx2至区块链网络为例:
[0028]在步骤S15中,区块链节点通过合约Contract_A执行tx2,在需要调用动态库S
A1
中的函数f3时,通过动态库加载函数DLCall、动态库S
A1
的调用地址addr1加载动态库S
A1
,再通过调用函数f3完成tx2的执行。
[0029]其中,所调用函数f3的函数名和相应的调用参数可以由tx2提交,也可以根据业务逻辑确定。
[0030]上述实施例通过在区块链虚拟机编译器中增加动态库加载函数的执行功能,同时在存储动态库时定义并存储动态库的调用地址,从而使得合约在需要调用动态库中的函数时可以通过动态库加载函数和相应的调用地址加载相应的动态库,最终实现了支持开发者对已部署在区块链上的合约的动态配置。
[0031]在一优选实施例中,上述生成第一动态库的第一调用地址包括:
[0032]根据第一动态库的哈希值和第一动态库配置交易所在的区块高度生成第一地址,并将第一地址作为第一动态库的第一调用地址。
[0033]具体地,本领域技术人员可以理解,上述第一调用地址还可以根据更多不同的方式生成,只需保障调用地址与动态库的关系是一一对应的,即可实现相同的技术效果。
[0034]图2为本专利技术一实施例提供的一种计算机设备的结构示意图。
[0035]如图2所示,作为另一方面,本申请还提供了一种计算机设备,包括一个或多个中央处理单元(CPU)201,其可以根据存储在只读存储器(ROM)202中的程序或者从存储部分208加载到随机访问存储器(RAM)203中的程序而执行各种适当的动作和处理。在RAM203中,还存储有设备200操作所需的各种程序和数据。CPU201、ROM202以及RAM203通过总线204彼此相连。输入/输出(I/O)接口205也连接至总线204。
[0036]以下部件连接至I/O接口205:包括键盘、鼠标等的输入部分206;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分207;包括硬盘等的存储部分208;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分209。通信部分209经本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种合约动态库的配置及加载方法,其特征在于,所述方法适用于区块链节点,所述方法包括:在区块链虚拟机编译器中增加动态库加载函数的执行功能;执行第一动态库配置交易,存储第一合约的第一动态库、生成所述第一动态库的第一调用地址并保存;通过所述第一合约执行第一交易,在需要调用所述第一动态库中的函数时通过所述动态库加载函数和所述第一调用地址加载所述第一动态库以完成所述第一交易的执行。2.根据权利要求1所述的方法,其特征在于,所述第一交易还包括所调用函数的函数名和相应的调用参数。3.根据权利要求1或2所述的方法,其特征在于,所述生成所述第一动...

【专利技术属性】
技术研发人员:吴思进王志文
申请(专利权)人:杭州复杂美科技有限公司
类型:发明
国别省市:

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

1