合约调用方法、装置、电子设备和存储介质制造方法及图纸

技术编号:33131068 阅读:25 留言:0更新日期:2022-04-17 00:47
本申请实施例公开了合约调用方法、装置、电子设备和存储介质,该方法包括:获取第一增强合约的第一地址;根据所述第一地址对第二合约进行指令增强得到第二增强合约,所述第二合约包括所述第一地址;将所述第二增强合约发送至第二设备,以便所述第二设备将所述第二增强合约部署在区块链上,得到所述第二增强合约的第二地址;根据所述第二地址向所述第二设备发送调用请求,以便所述第二设备根据所述第二地址调用所述第二增强合约。利用被调用第一合约的地址,对包含有调用第一合约的逻辑的第二合约进行指令增强,基于第二地址对第二增强合约调用可实现增强合约之间的跨合约调用。调用可实现增强合约之间的跨合约调用。调用可实现增强合约之间的跨合约调用。

【技术实现步骤摘要】
合约调用方法、装置、电子设备和存储介质


[0001]本申请涉及计算机
,具体涉及合约调用方法、装置、电子设备和存储介质。

技术介绍

[0002]区块链是一种新型去中心化协议,能安全地存储数字货币交易或其他数据,信息不可伪造和篡改,区块链上的交易确认由区块链上的所有节点共同完成,由共识算法保证其一致性,区块链上维护一个公共的账本,公共账本位于存储区块上任何节点可见,从而保证其不可伪造和篡改。
[0003]智能合约是编程在区块链上的汇编语言,智能合约是一个在计算机系统上,当一定条件被满足后,可以被自动执行的合约。由传统编程语言编写的智能合约缺少操作持久化字段的指令,增强后的该种智能合约能够通过指令对区块链账本的持久化字段进行读写等操作,然而,目前很多由传统编程语言编写的智能合约中都存在对跨合约调用逻辑,目前无法针对该种智能合约进行指令增强和调用。

技术实现思路

[0004]本申请实施例提供合约调用方法、装置、电子设备和存储介质,可以对包含跨合约调用逻辑的智能合约进行指令增强和调用。
[0005]本申请实施例提供一种合约调用方法,应用于第一设备,该方法包括:获取第一增强合约的第一地址,所述第一地址为第一增强合约在区块链上部署后得到的地址;根据所述第一地址对第二合约进行指令增强得到第二增强合约,所述第二合约包括所述第一地址;将所述第二增强合约发送至第二设备,以便所述第二设备将所述第二增强合约部署在区块链上,得到所述第二增强合约的第二地址;根据所述第二地址向所述第二设备发送调用请求,以便所述第二设备根据所述第二地址调用所述第二增强合约。
[0006]本申请实施例提供一种合约调用方法,应用于第二设备,第二设备为区块链中的节点设备,该方法包括:接收第一设备发送的调用请求,所述调用请求包括第二地址;根据所述第二地址获取第二增强合约的字节码文件,所述第二增强合约包括第一地址;根据所述第二增强合约的字节码文件和第一地址,创建所述第二增强合约的目标持久化字段信息;基于所述目标持久化字段信息执行所述第二增强合约。
[0007]本申请实施例还提供一种合约调用装置,应用于第一设备,该装置包括:获取模块,用于获取第一增强合约的第一地址,所述第一地址为第一增强合约在区块链上部署后得到的地址;增强模块,用于根据所述第一地址对第二合约进行指令增强得到第二增强合约,所述第二合约包括所述第一地址;部署模块,用于将所述第二增强合约发送至第二设备,以便所述第二设备将所述第二增强合约部署在区块链上,得到所述第二增强合约的第二地址;调用模块,用于根据所述第二地址向所述第二设备发送调用请求,以便所述第二设备根据所述第二地址调用所述第二增强合约。
[0008]本申请实施例还提供一种合约调用装置,应用于第二设备,第二设备为区块链中的节点设备,该装置包括:接收模块,用于接收第一设备发送的调用请求,所述调用请求包括第二地址;文件获取模块,用于根据所述第二地址获取第二增强合约的字节码文件,所述第二增强合约包括第一地址;创建模块,用于根据所述第二增强合约的字节码文件和第一地址,创建所述第二增强合约的目标持久化字段信息;执行模块,用于基于所述目标持久化字段信息执行所述第二增强合约。
[0009]本申请实施例还提供一种电子设备,包括存储器存储有多条指令;所述处理器从所述存储器中加载指令,以执行本申请实施例所提供的任一种合约调用方法中的步骤。
[0010]本申请实施例还提供一种计算机可读存储介质,所述计算机可读存储介质存储有多条指令,所述指令适于处理器进行加载,以执行本申请实施例所提供的任一种合约调用方法中的步骤。
[0011]本申请实施例可以利用被调用第一增强合约的地址,对包含有调用第一合约的逻辑的第二合约进行指令增强,基于第二地址对第二增强合约调用可实现增强合约之间的跨合约调用。并且在对第二合约进行指令增强时,引入对第二合约依赖检查和安全检查,进一步确保第二合约的正确性,避免在调用第二增强合约时出错。
附图说明
[0012]为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0013]图1是本申请实施例提供的合约调用方法的场景示意图;
[0014]图2是本申请实施例提供的合约调用方法的流程示意图;
[0015]图3是本申请另一个实施例提供的合约调用方法的流程示意图;
[0016]图4是本申请实施例提供的目标持久化字段信息的示意图;
[0017]图5是本申请另一个实施例提供的目标持久化字段信息的示意图;
[0018]图6是本申请再一个实施例提供的目标持久化字段信息的示意图;
[0019]图7是本申请又一个实施例提供的目标持久化字段信息的示意图;
[0020]图8是本申请实施例提供的合约调用装置的结构示意图;
[0021]图9是本申请另一个实施例提供的合约调用装置的结构示意图;
[0022]图10是本申请实施例提供的电子设备的结构示意图。
具体实施方式
[0023]下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
[0024]本申请实施例提供合约调用方法、装置、电子设备和存储介质。
[0025]其中,该合约调用装置具体可以集成在电子设备中,该电子设备可以为终端、服务
器等设备。其中,终端可以为手机、平板电脑、智能蓝牙设备、笔记本电脑、或者个人电脑(Personal Computer,PC)等设备;服务器可以是单一服务器,也可以是由多个服务器组成的服务器集群。
[0026]在一些实施例中,该合约调用装置还可以集成在多个电子设备中,比如,合约调用装置可以集成在多个服务器中,由多个服务器来实现本申请的合约调用方法。
[0027]在一些实施例中,服务器也可以以终端的形式来实现。
[0028]请参考图1,示出了合约调用方法的场景示意图。其中,第一设备101为链下设备,第二设备102为区块链中的节点设备。用户可以在第一设备101上编写包含调用第一增强合约的调用逻辑的第二合约,并对第二合约进行指令增强得到第二增强合约。
[0029]第一设备101可以将第二增强合约以交易的形式发送至第二设备102,以便部署在区块链上,得到第二增强合约的第二地址。
[0030]第一设备101可以将携带有第二地址的调用请求发送至第二设备102,以便第二设备102根据第二地址调用第二增强合约。
[0031]作为一种实施方式,第一设备101和第二设备102可以集成为一个电子设备,第一设备101的功能可以作本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种合约调用方法,其特征在于,应用于第一设备,所述方法包括:获取第一增强合约的第一地址,所述第一地址为第一增强合约在区块链上部署后得到的地址;根据所述第一地址对第二合约进行指令增强得到第二增强合约,所述第二合约包括所述第一地址;将所述第二增强合约发送至第二设备,以便所述第二设备将所述第二增强合约部署在区块链上,得到所述第二增强合约的第二地址;根据所述第二地址向所述第二设备发送调用请求,以便所述第二设备根据所述第二地址调用所述第二增强合约。2.根据权利要求1所述的方法,其特征在于,所述第一增强合约为对第一合约进行指令增强得到,所述根据所述第一地址对第二合约进行指令增强得到第二增强合约,包括:解压所述第二合约至预设文件,所述预设文件包括字节码文件和元数据,所述字节码文件包括基于所述第一地址获取到的第一合约中的字节码文件;基于所述元数据和字节码文件,确定所述第二合约是否满足预设条件;若所述第二合约满足所述预设条件,基于所述字节码文件解析合约类的持久化字段信息,所述合约类为字节码文件中继承了合约抽象类的类,所述持久化字段信息包括所述合约类中的持久化字段;基于所述持久化字段信息,将所述合约类中的预设字节码指令替换为预设增强指令得到目标字节码,所述预设字节码指令和预设增强指令具有一一对应的关系;以所述目标字节码替换所述预设文件中的对应字节码文件,并打包所述预设文件,得到所述第二增强合约。3.根据权利要求2所述的方法,其特征在于,所述预设条件包括第一条件和第二条件,所述基于所述元数据和字节码文件,确定所述第二合约是否满足预设条件,包括:对所述元数据进行解析,确定合约开发框架包是否满足第一条件;若合约开发框架包满足所述第一条件,将所述合约开发框架包和开发工具包中的类存储至基础类池;解析所述字节码文件中的类并存储至合约类池,并确定所述合约类池中的合约类是否满足第二条件;若所述字节码文件中的类满足第二预设条件,且所述合约开发框架包满足所述第一条件,确定所述第二合约满足所述预设条件。4.根据权利要求3所述的方法,其特征在于,所述基于所述持久化字段信息,将所述合约类中的预设字节码指令替换为预设增强指令得到目标字节码,包括:遍历所述合约类中的方法的字节码指令;当所述字节码指令为所述预设字节码指令时,确定操作字段的声明类是否存在于所述基础类池或合约类池中,所述操作字段为所述字节码指令所操作的字段;若所述操作字段的声明类存在于所述基础类池或合约类池中,确定所述操作字段是否存在于所述持久化字段信息中;若所述操作字段存在于所述持久化字段信息中,将所述字节码指令替换为预设增强指令。
5.一种合约调用方法,其特征在于,应用于第二设备,所述第二设备为区块链中的节点设备,所述方法包括:接收第一设备发送的调用请求,所述调用请求包括第二地址;根据所述第二地址获取第二增强合约的字节码文件,所述第二增强合约包括第一地址;根...

【专利技术属性】
技术研发人员:张延楠张珂杰卢益铭黄方蕾尚璇
申请(专利权)人:杭州趣链科技有限公司
类型:发明
国别省市:

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

1